MSX1 boot "logo"

Страница 3/13
1 | 2 | | 4 | 5 | 6 | 7 | 8

By sdsnatcher73

Hero (654)

Аватар пользователя sdsnatcher73

03-05-2018, 19:01

Why not have it scroll in from 2 sides, 8 pixels at a time (so intentionaly less smooth...)

By theNestruo

Expert (112)

Аватар пользователя theNestruo

03-05-2018, 19:31

Manuel wrote:

hah, good point syn! I never realized that this animation was on MSX1! So, it seems to be quite possible to do an MSX2-like animation on MSX1...! No idea about the ROM size it takes, but it reckon can't be much more than on MSX2.

The source looks bigger than expected... Don't know about the actual size in bytes, though

https://github.com/k0gaMSX/menace/tree/master/src
(tnilogo_msx1-*.asm and tnimsx1.asm, I guess)

By Eugeny_Brychkov

Paragon (1106)

Аватар пользователя Eugeny_Brychkov

04-05-2018, 00:24

Just finished development, executable called msx1logo.bin is here, must be bloaded (or just pressed on with Enter key in NETBROWSE if you have GR8NET).

This sample clearly does not fit into challenge requirements as its data is slightly more than 600 bytes, and its code is about 1KB. It is possible to have at least twice less code than I currently have, but I was striving for great performance and visualization rather than optimize size (at least at this point). Here're the points I want to mention:

  • Logo is shown using SCREEN 1 mode;
  • It shifts one dot at a time, thus there're 8 pattern generator tables (for each dot shift) and 2 name tables (for even and odd pages), almost whole VRAM is utilized;
  • Even more, there's no space for proper name table, thus I had to put solid sprite close to the lowest 1/3 of the screen and switch name table locations when sprite collision occurs;
  • Demo seems to work in emulation as well as on real machines (TMS and V99x8).

There're several things I found out during development, let me list them here, maybe someone will find them useful:

  1. I was astonished to see that putting sprite at Y coordinate equal to 0 actually puts it to coordinate 1 relative patterns. I did not code video much in the past, but did not remember this feature (also given that I was reworking V9938 manual I should have known it!);
  2. Reading status register in the loop (aka polling) frequently does not work properly. I suspect that register read comes at the time when register value changes, and the read event immediately resets the bits of the register, and at the end CPU samples status bits as all zeros. The issue actually happens very often if you just perform input, check for bit and back jump to input (e.g. once per 10 reads);
  3. While point above causes very unreliable identification of S#0's bit F (frame finished), there's a workaround for bit C (collision). Initially I put two 8*8 colliding sprites consisting of only one dot, and C bit setting event was missed frequently. Then I changed sprites to be solid (all dots are set), so that each their dot causes C bit set. Thus if one or two bit setting events are missed during quick polling, third is being caught. Not 100% reliable, but seems working as far as I tested. MSX2/2+ extrom also uses this workaround.

By Parn

Champion (426)

Аватар пользователя Parn

04-05-2018, 01:17

Hot dang! Nice effect, and clever how you used sprites to circumvent SCREEN 1 color limitations.

By journey

Champion (372)

Аватар пользователя journey

04-05-2018, 09:44

I remember the boot image of my old Toshiba HX-20

By Parn

Champion (426)

Аватар пользователя Parn

04-05-2018, 14:43

Lovely!

By Manuel

Ascended (15821)

Аватар пользователя Manuel

04-05-2018, 18:24

Great job Eugeny! But there is a bug in the memory counter... I got it to display 32kB RAM on an MSX2 with 2MB Smile

By mars2000you

Enlighted (5515)

Аватар пользователя mars2000you

04-05-2018, 18:59

Manuel wrote:

Great job Eugeny! But there is a bug in the memory counter... I got it to display 32kB RAM on an MSX2 with 2MB Smile

On an European MSX2, the MSX2 boot always indicates 64kB or 128kB, even if the machine has been upgraded to 512kB for example. This bug has has only been fixed on MSX2+.

So, why not a true error for the MSX1 boot, as many MSX1 machines have only 16 or 32kB RAM?

By Fabf

Master (222)

Аватар пользователя Fabf

04-05-2018, 19:40

Very nice Eugeny ! Big smile

By Manuel

Ascended (15821)

Аватар пользователя Manuel

04-05-2018, 20:09

I guess the memory counter wasn't implemented, so this logo is meant for a 32kB MSX1 only...

Страница 3/13
1 | 2 | | 4 | 5 | 6 | 7 | 8