-
Notifications
You must be signed in to change notification settings - Fork 79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
tetris.gt1 doesn't run with 64K and VCF.rom #37
Comments
Segments look fine (except for the first zero-page segment).
|
Root cause is the "+0x80" hack to make zero-page loading work with the ROM loader of ROMv1. This can be removed however: the ROM loader of ROM v2 doesn't need this hack. |
The Loader issue in the JS emulation is caused by the tight delay in the emulator when waiting for loader to start. It waits for 60 frames, but ~65 are required for the VCF ROM: it writes some more text to the screen. loader.js: |
The dissassembly file can show comments when they are injected with the C() function. But this is a bit ugly: it is harder to read in the .py source than regular comments, while regular annotations don't show up in the .asm file. This leads to two views on the code. That isn't helpful. A much better solution is to produce an old-fashioned listing of the source code, along with the assembly result on the left. This is possible with the Python inspect module! Change: Replace .asm output files with .lst files. For dev.rom, we now have the Python source lines listed in dev.lst. Almost all C(xxx) calls could be eliminated between enableListing() and disableListing(). The justification for the explicit enable/disable (instead of "always on") is that introspection is rather slow. >90% of the ROM file is storage area generated from the same macro. With that, looking up the line number for each word in the storage area, and then deciding that it was already listed, is very slow.. (Note: This can be remedied with more refactoring that eliminates the _linenos[] list. Maybe later...) The transition is quite a bit of work, so for the older ROM files we don't change the output (for now). Snippet from dev.lst: ----------------------------------------------------------------------------------- 0b2d fc32 bra .sysSb#38 3062 bra('.sysSb#38') #36 0b2e de00 st [y,x++] 3063 st([Y,Xpp]) #37 3064 label('.sysSb#35') .sysSb#35: 0b2f 0200 nop 3065 wait(38-35) #35 0b30 0200 nop 0b31 0200 nop 3066 label('.sysSb#38') .sysSb#38: 0b32 0124 ld [$24] 3067 ld([sysArgs+0]) #38 0b33 2001 anda $01 3068 anda(1) #39 -----------------------------------------------------------------------------------
VCF.rom with built-in tetris.gt1 doesn't load in 64K. It loads ok with 32K.
Interestingly, it loads and runs fine with 32K that has 64K faked by clearing address 1.
The VCF ROM has a hacked SYS_Exec_88, because tetris.gt1 has a first segment that overlaps.
(Also Loader itself has issues in JS emulation with the VCF.rom, also in 32K. It might be specific to the VCF.rom, as it has added text on-screen. Strange, but perhaps not important)
VCF.rom.zip
The text was updated successfully, but these errors were encountered: