If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
From TV Animation Slam Dunk: Gakeppuchi no Kesshou League/Notes
Jump to navigation
Jump to search
The following article is a Notes Page for From TV Animation Slam Dunk: Gakeppuchi no Kesshou League.
================================================== ================================================== ______________________________ | | | SLAM DUNK | | Gakeppuchi no Kesshou League | |______________________________| v1.0: Original version typed up By Sawakita ========================= = ASM MAP = ========================= This game has an interesting organization: each bank (except Bank0, obviously) starts with a table of "2Bytes pointers", that point to that bank's routines. There's a routine that manages this organizational method, located at 0x0530: 00000530 F5 push af ;preserve registers 00000531 C5 push bc 00000532 E5 push hl 00000533 FA A6 C0 ld a,($C0A6) ;preserve old bank 00000536 F5 push af 00000537 7A ld a,d ;load new bank 00000538 EA A6 C0 ld ($C0A6),a 0000053B EA 00 21 ld ($2100),a 0000053E CD 4C 05 call $054C 0000054C 21 00 40 ld hl,$4000 ;new bank's beginning 0000054F 16 00 ld d,$00 ;de = e [routine_ID] 00000551 19 add hl,de ;get the 00000552 19 add hl,de ;new routine's 00000553 19 add hl,de ;offset 00000554 F0 91 ld a,($FF00+91) 00000556 E9 jp (hl) [...] 00000541 F1 pop af 00000542 EA A6 C0 ld ($C0A6),a ;restore old bank 00000545 EA 00 21 ld ($2100),a 00000548 E1 pop hl ;restore registers 00000549 C1 pop bc 0000054A F1 pop af 0000054B C9 ret ------- BANK 00 ------- 02e5: VBLANK 0530: change bank [d:bank, e:routine_ID, ff91=value (optional)] 054c: jp bank's routine 0622: LCD control 06bb: write(00) 'bc' bytes starting 'hl' Example: bc=00a0, hl=ff8f; reset 0xff8f to 0xfffd 06bd: write 'd', 'bc' times at 'hl' 06c5: if LCDC(bit7)=0 then write(ff) 'bc' bytes starting 'hl' else (???) end if 06c9: same as 06c5, but write(00) 0729: write bc bytes from hl in de 0868: win Y&X (RAM saves) 0ead: (d307)=e4 ;bg pal 0ed9: ff8f=00; ff91=00; call 0d_02(=0d_401b); 0ee7: ff90=00; ff91=00; call 0d_02(=0d_401b); 2484: (c1a4)-->l (c1a5)-->h tile arrangement handler [*] ------- BANK 01 ------- 643a[02]: call 0c_12 ------- BANK 02 ------- 4563[03]: load jap tiles in 9000 (ROM 8747) (800 bytes) load other tiles in 8f00 (ROM 8f47) (100 bytes) ------- BANK 05 (various tile_arrange) ------- [09]: tile_arrange 1st border (menu) [30] tile_arrange common border (menu) ------- BANK 0c ------- 57c9[12]: ------- BANK 0d ------- 401b[02]: [RAM c600,c60a,c65f,c603] [03] ------- BANK 0f ------- 74bf[04]: black screen(?) 73e0[05]: 7627[0f]: ========================= = RAM MAP = ========================= c0a0 = c0a1 = c0a2 = c0a6 = ROMbank c0ad = c0af = c0b1 = c0b2 = c0b3 = c126 = c127 = c200 = c240 = scroll Y c241 = scroll X c242 = win Y c243 = win X c600 = c601 = c603 = c60a = c60b = c60c = c60d = c60e = c60f = c610 = c611 = c612 = c613 = c614 = c633 = c634 = c635 = c636 = c643 = c644 = c645 = c646 = c64f = c650 = c651 = c652 = c65f = c660 = c661 = c662 = c663 = c664 = c665 = c666 = c667 = c668 = c669 = c66a = c66b = c6c3 = d307 = bg pal d308 = obj pal 0 d309 = obj pal 1 ========================= TILE ARRANGEMENT HANDLER: starts at 0x248d (a=0); ========================= 0e: 4 more Bytes bc = 1st Ptr (then, hl=bc) de = 2nd Ptr GoTo 2d08 ================================================== ==================================================