0. Replacing the font $1800 = VRAM font. Unfortunately there's only ~64+ tiles and it's compressed. ; ------------------------------------------------------ ; RST 08H = Set VRAM address [000008] 0008 7B LD A,E AF=8902 BC=0010 DE=7F00 HL=C900 SP=CAE6 IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM] [000009] 0009 D3 BF OUT (BFh),A AF=0002 BC=0010 DE=7F00 HL=C900 SP=CAE6 IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM] [00000B] 000b 7A LD A,D AF=0002 BC=0010 DE=7F00 HL=C900 SP=CAE6 IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM] [00000C] 000c D3 BF OUT (BFh),A AF=7F02 BC=0010 DE=7F00 HL=C900 SP=CAE6 IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM] [00000E] 000e C9 RET AF=7F02 BC=0010 DE=7F00 HL=C900 SP=CAE6 IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM] ; ------------------------------------------------------ ; Read control byte [0004C0] 04c0 7E LD A,(HL) AF=C100 BC=0400 DE=4000 HL=A4C1 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004C1] 04c1 23 INC HL AF=0F00 BC=0400 DE=4000 HL=A4C1 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] ; $00 = Abort [0004C2] 04c2 B7 OR A AF=0F00 BC=0400 DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004C3] 04c3 C8 RET Z AF=0F0C BC=0400 DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] ; Run length [0004C4] 04c4 4F LD C,A AF=0F0C BC=0400 DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004C5] 04c5 E6 7F AND 7Fh AF=0F0C BC=040F DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004C7] 04c7 47 LD B,A AF=0F1C BC=040F DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] ; Raw flag [0004C8] 04c8 79 LD A,C AF=0F1C BC=0F0F DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004C9] 04c9 E6 80 AND 80h AF=0F1C BC=0F0F DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] ; Write Raw/RLE byte [0004CB] 04cb F3 DI AF=0054 BC=0F0F DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004CC] 04cc CF RST 08 AF=0054 BC=0F0F DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004CD] 04cd 7E LD A,(HL) AF=4054 BC=0F0F DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004CE] 04ce D3 BE OUT (BEh),A AF=0054 BC=0F0F DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004D0] 04d0 FB EI AF=0054 BC=0F0F DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] ; Bump Raw pointer only [0004D1] 04d1 CA 4D 05 JP Z,04D5h [0004D4] 04d4 23 INC HL ; Alignment of 4 [0004D5] 04d5 13 INC DE AF=0054 BC=0F0F DE=4000 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004D6] 04d6 13 INC DE AF=0054 BC=0F0F DE=4001 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004D7] 04d7 13 INC DE AF=0054 BC=0F0F DE=4002 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004D8] 04d8 13 INC DE AF=0054 BC=0F0F DE=4003 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] ; Loop till run is done [0004D9] 04d9 10 F0 DJNZ 04CBh AF=0054 BC=0F0F DE=4004 HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] ; Bump pointer for completion of RLE run [0004DB] 04db C2 C0 04 JP NZ,04C0h AF=0054 BC=000F DE=403C HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004DE] 04de 23 INC HL AF=0054 BC=000F DE=403C HL=A4C2 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004DF] 04df C3 C0 04 JP 04C0h AF=0054 BC=000F DE=403C HL=A4C3 SP=CAF2 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] ; ------------------------------------------------------ ; 4 color planes [0004B3] 04b3 06 04 LD B,04h AF=C100 BC=0000 DE=4000 HL=A4C1 SP=CAF8 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004B5] 04b5 C5 PUSH BC AF=C100 BC=0400 DE=4000 HL=A4C1 SP=CAF8 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] ; Decode each color plane individually [0004B6] 04b6 D5 PUSH DE AF=C100 BC=0400 DE=4000 HL=A4C1 SP=CAF6 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004B7] 04b7 CD C0 04 CALL 04C0h AF=C100 BC=0400 DE=4000 HL=A4C1 SP=CAF4 IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [0004BA] 04ba D1 POP DE AF=0044 BC=0028 DE=5180 HL=A7F7 SP=CAF4 IX=C880 IY=C800 P0=00000 P1=04000 P2=44000 [ROM] [0004BB] 04bb 13 INC DE AF=0044 BC=0028 DE=4000 HL=A7F7 SP=CAF6 IX=C880 IY=C800 P0=00000 P1=04000 P2=44000 [ROM] [0004BC] 04bc C1 POP BC AF=0044 BC=0028 DE=4001 HL=A7F7 SP=CAF6 IX=C880 IY=C800 P0=00000 P1=04000 P2=44000 [ROM] [0004BD] 04bd 10 F6 DJNZ 04B5h AF=0044 BC=0400 DE=4001 HL=A7F7 SP=CAF8 IX=C880 IY=C800 P0=00000 P1=04000 P2=44000 [ROM] [0004BF] 04bf C9 RET AF=0044 BC=0000 DE=4004 HL=AF58 SP=CAF8 IX=C880 IY=C800 P0=00000 P1=04000 P2=44000 [ROM] ; ------------------------------------------------------ ; Write to $0000 VRAM (backdrop) [003EB2] 3eb2 11 00 40 LD DE,4000h AF=C100 BC=0000 DE=C258 HL=A4C1 SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] [003EB5] 3eb5 CD B3 04 CALL 04B3h AF=C100 BC=0000 DE=4000 HL=A4C1 SP=CAFA IX=C880 IY=C800 V P0=00000 P1=04000 P2=44000 [ROM] ; _____________________________________________________________ [0045A1] 45a1 CD 6B 3E CALL 3E6Bh AF=0844 BC=0000 DE=0001 HL=2009 SP=CAFC IX=B8AF IY=C400 V P0=00000 P1=04000 P2=70000 [ROM] ; Initial intro sequence ; Font bank [0045A4] 45a4 21 FF FF LD HL,FFFFh AF=0044 BC=0000 DE=D601 HL=9709 SP=CAFC IX=B8AF IY=C400 V P0=00000 P1=04000 P2=3C000 [ROM] [0045A7] 45a7 36 10 LD (HL),10h AF=0044 BC=0000 DE=D601 HL=FFFF SP=CAFC IX=B8AF IY=C400 V P0=00000 P1=04000 P2=3C000 [ROM] ; Narrative font ($0C0-0FF) ; $43AD8-43EBD ($3E5) [0045A9] 45a9 21 D8 BA LD HL,BAD8h AF=0044 BC=0000 DE=D601 HL=FFFF SP=CAFC IX=B8AF IY=C400 V P0=00000 P1=04000 P2=40000 [ROM] [0045AC] 45ac 11 00 58 LD DE,5800h AF=0044 BC=0000 DE=D601 HL=BAD8 SP=CAFC IX=B8AF IY=C400 V P0=00000 P1=04000 P2=40000 [ROM] [0045AF] 45af CD B3 04 CALL 04B3h AF=0044 BC=0000 DE=5800 HL=BAD8 SP=CAFC IX=B8AF IY=C400 V P0=00000 P1=04000 P2=40000 [ROM] ; Extra tiles ($1F0-1FB) ; $43EBE-43F5D ($A0) [0045B2] 45b2 21 BE BE LD HL,BEBEh AF=0044 BC=0000 DE=5804 HL=BEBE SP=CAFC IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] [0045B5] 45b5 11 00 7E LD DE,7E00h AF=0044 BC=0000 DE=5804 HL=BEBE SP=CAFC IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] [0045B8] 45b8 CD B3 04 CALL 04B3h AF=0044 BC=0000 DE=7E00 HL=BEBE SP=CAFC IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] ; Kanji tiles ($B8-BF) ; $43F5E-43FE3 ($86) [0045BB] 45bb 21 5E BF LD HL,BF5Eh AF=0044 BC=0000 DE=7E04 HL=BF5E SP=CAFC IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] [0045BE] 45be 11 00 57 LD DE,5700h AF=0044 BC=0000 DE=7E04 HL=BF5E SP=CAFC IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] [0045C1] 45c1 CD B3 04 CALL 04B3h AF=0044 BC=0000 DE=5700 HL=BF5E SP=CAFC IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] ; Total: $50B [0045C4] 45c4 AF XOR A AF=0044 BC=0000 DE=5704 HL=BFE4 SP=CAFC IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] [0045C5] 45c5 32 04 C3 LD (C304h),A AF=0044 BC=0000 DE=5704 HL=BFE4 SP=CAFC IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] [0045C8] 45c8 32 00 C3 LD (C300h),A AF=0044 BC=0000 DE=5704 HL=BFE4 SP=CAFC IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] ; ----------------------------------------------------- ; Code called during in-game play, not initial intro sequence [003DDE] 3dde 21 FF FF LD HL,FFFFh AF=0044 BC=0000 DE=D601 HL=9709 SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=3C000 [ROM] [003DE1] 3de1 36 10 LD (HL),10h AF=0044 BC=0000 DE=D601 HL=FFFF SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=3C000 [ROM] [003DE3] 3de3 21 D8 BA LD HL,BAD8h AF=0044 BC=0000 DE=D601 HL=FFFF SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=40000 [ROM] [003DE6] 3de6 11 00 58 LD DE,5800h AF=0044 BC=0000 DE=D601 HL=BAD8 SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=40000 [ROM] [003DE9] 3de9 CD B3 04 CALL 04B3h AF=0044 BC=0000 DE=5800 HL=BAD8 SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=40000 [ROM] [003DEC] 3dec 21 BE BE LD HL,BEBEh AF=0044 BC=0000 DE=5804 HL=BEBE SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] [003DEF] 3def 11 00 7E LD DE,7E00h AF=0044 BC=0000 DE=5804 HL=BEBE SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] [003DF2] 3df2 CD B3 04 CALL 04B3h AF=0044 BC=0000 DE=7E00 HL=BEBE SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] [003DF5] 3df5 AF XOR A AF=0044 BC=0000 DE=7E04 HL=BF5E SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] [003DF6] 3df6 32 04 C3 LD (C304h),A AF=0044 BC=0000 DE=7E04 HL=BF5E SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] [003DF9] 3df9 32 00 C3 LD (C300h),A AF=0044 BC=0000 DE=7E04 HL=BF5E SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] [003DFC] 3dfc 32 00 C8 LD (C800h),A AF=0044 BC=0000 DE=7E04 HL=BF5E SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] [003DFF] 3dff 32 E9 C2 LD (C2E9h),A AF=0044 BC=0000 DE=7E04 HL=BF5E SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] ; ----------------------------------------------------------- ; cutscenes [0048DA] 48da 21 FF FF LD HL,FFFFh AF=0044 BC=001E DE=79C6 HL=2009 SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=0C000 [ROM] [0048DD] 48dd 36 10 LD (HL),10h AF=0044 BC=001E DE=79C6 HL=FFFF SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=0C000 [ROM] [0048DF] 48df 21 D8 BA LD HL,BAD8h AF=0044 BC=001E DE=79C6 HL=FFFF SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=40000 [ROM] [0048E2] 48e2 11 00 58 LD DE,5800h AF=0044 BC=001E DE=79C6 HL=BAD8 SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=40000 [ROM] [0048E5] 48e5 CD B3 04 CALL 04B3h AF=0044 BC=001E DE=5800 HL=BAD8 SP=CAFA IX=B8AF IY=C400 V P0=00000 P1=04000 P2=40000 [ROM] [0048E8] 48e8 21 BE BE LD HL,BEBEh AF=0044 BC=001E DE=5804 HL=BEBE SP=CAFA IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] [0048EB] 48eb 11 00 7E LD DE,7E00h AF=0044 BC=001E DE=5804 HL=BEBE SP=CAFA IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] [0048EE] 48ee CD B3 04 CALL 04B3h AF=0044 BC=001E DE=7E00 HL=BEBE SP=CAFA IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] [0048F1] 48f1 21 FF FF LD HL,FFFFh AF=0044 BC=001E DE=7E04 HL=BF5E SP=CAFA IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] [0048F4] 48f4 36 18 LD (HL),18h AF=0044 BC=001E DE=7E04 HL=FFFF SP=CAFA IX=B8AF IY=C400 P0=00000 P1=04000 P2=40000 [ROM] ; ------------------------------------------------------------ ; load game [0007C9] 07c9 21 FF FF LD HL,FFFFh AF=0042 BC=0000 DE=7800 HL=C202 SP=CAFE IX=FFFF IY=FFFF V P0=00000 P1=04000 P2=38000 [ROM] [0007CC] 07cc 36 10 LD (HL),10h AF=0042 BC=0000 DE=7800 HL=FFFF SP=CAFE IX=FFFF IY=FFFF V P0=00000 P1=04000 P2=38000 [ROM] [0007CE] 07ce 21 D8 BA LD HL,BAD8h AF=0042 BC=0000 DE=7800 HL=FFFF SP=CAFE IX=FFFF IY=FFFF V P0=00000 P1=04000 P2=40000 [ROM] [0007D1] 07d1 11 00 58 LD DE,5800h AF=0042 BC=0000 DE=7800 HL=BAD8 SP=CAFE IX=FFFF IY=FFFF V P0=00000 P1=04000 P2=40000 [ROM] [0007D4] 07d4 CD B3 04 CALL 04B3h AF=0042 BC=0000 DE=5800 HL=BAD8 SP=CAFE IX=FFFF IY=FFFF V P0=00000 P1=04000 P2=40000 [ROM] [0007D7] 07d7 21 BE BE LD HL,BEBEh AF=0044 BC=0000 DE=5804 HL=BEBE SP=CAFE IX=FFFF IY=FFFF V P0=00000 P1=04000 P2=40000 [ROM] [0007DA] 07da 11 00 7E LD DE,7E00h AF=0044 BC=0000 DE=5804 HL=BEBE SP=CAFE IX=FFFF IY=FFFF V P0=00000 P1=04000 P2=40000 [ROM] [0007DD] 07dd CD B3 04 CALL 04B3h AF=0044 BC=0000 DE=7E00 HL=BEBE SP=CAFE IX=FFFF IY=FFFF V P0=00000 P1=04000 P2=40000 [ROM] [0007E0] 07e0 CD 44 03 CALL 0344h AF=0044 BC=0000 DE=7E04 HL=BF5E SP=CAFE IX=FFFF IY=FFFF V P0=00000 P1=04000 P2=40000 [ROM] ; ------------------------------------------------------------ ; dungeons [0010E3] 10e3 21 FF FF LD HL,FFFFh AF=8509 BC=0000 DE=B61C HL=C202 SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM] [0010E6] 10e6 36 10 LD (HL),10h AF=8509 BC=0000 DE=B61C HL=FFFF SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=0C000 [ROM] [0010E8] 10e8 21 D8 BA LD HL,BAD8h AF=8509 BC=0000 DE=B61C HL=FFFF SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=40000 [ROM] [0010EB] 10eb 11 00 58 LD DE,5800h AF=8509 BC=0000 DE=B61C HL=BAD8 SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=40000 [ROM] [0010EE] 10ee CD B3 04 CALL 04B3h AF=8509 BC=0000 DE=5800 HL=BAD8 SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=40000 [ROM] [0010F1] 10f1 21 BE BE LD HL,BEBEh AF=0044 BC=0000 DE=5804 HL=BEBE SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] [0010F4] 10f4 11 00 7E LD DE,7E00h AF=0044 BC=0000 DE=5804 HL=BEBE SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] [0010F7] 10f7 CD B3 04 CALL 04B3h AF=0044 BC=0000 DE=7E00 HL=BEBE SP=CAFE IX=C880 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] [0010FA] 10fa 3E 39 LD A,39h AF=0044 BC=0000 DE=7E04 HL=BF5E SP=CAFE IX=C880 IY=C800 V P0=00000 P1=04000 P2=40000 [ROM] ; ------------------------------------------------------------ ; dungeon pits [006971] 6971 21 FF FF LD HL,FFFFh AF=0044 BC=0000 DE=7D80 HL=D600 SP=CAFA IX=C860 IY=C800 V P0=00000 P1=04000 P2=18000 [ROM] [006974] 6974 36 10 LD (HL),10h AF=0044 BC=0000 DE=7D80 HL=FFFF SP=CAFA IX=C860 IY=C800 V P0=00000 P1=04000 P2=18000 [ROM] [006976] 6976 21 BE BE LD HL,BEBEh AF=0044 BC=0000 DE=7D80 HL=FFFF SP=CAFA IX=C860 IY=C800 V P0=00000 P1=04000 P2=40000 [ROM] [006979] 6979 11 00 7E LD DE,7E00h AF=0044 BC=0000 DE=7D80 HL=BEBE SP=CAFA IX=C860 IY=C800 V P0=00000 P1=04000 P2=40000 [ROM] [00697C] 697c CD B3 04 CALL 04B3h AF=0044 BC=0000 DE=7E00 HL=BEBE SP=CAFA IX=C860 IY=C800 V P0=00000 P1=04000 P2=40000 [ROM] [00697F] 697f 06 01 LD B,01h AF=0044 BC=0000 DE=7E04 HL=BF5E SP=CAFA IX=C860 IY=C800 P0=00000 P1=04000 P2=40000 [ROM] ; ____________________________________________________________ VRAM contents (tiles): $000-0BF = Backdrop $0C0-0FF = 64 font tiles ($40) $100-1B3 = Overworld / Battle $1B4-1BF = Empty space? (12) $1C0-1EF = NT $1F0-1F3 = 4 window tiles $1F4-1F7 = 4 extra tiles (HPME) $1F8-1F9 = OAM $1FA-1FB = OAM --> 2 extra tiles (LV) $1FC-1FF = OAM We can squeeze an upper/lowercase font if the empty space is valid. Unfortunately though, $1b4-1bf causes some major interference with dungeon doors. Rewiring around it causes unstable visual output. Unsightly. A few unused letters will be canned. Like 'X'. ; ------------------------------------------------------------- For those unfamiliar with SMS/GG OAM, please note: 64 sprites. $100 table in VRAM. - $40 bytes for 'y' - $40 dummy bytes (Phantasy Star uses it for two font tiles) - $80 bytes for 'x' / 'pattern name' pairs