diff options
Diffstat (limited to 'engine/HoF_room_pc.asm')
-rwxr-xr-x | engine/HoF_room_pc.asm | 263 |
1 files changed, 263 insertions, 0 deletions
diff --git a/engine/HoF_room_pc.asm b/engine/HoF_room_pc.asm new file mode 100755 index 00000000..aa9a9882 --- /dev/null +++ b/engine/HoF_room_pc.asm @@ -0,0 +1,263 @@ +HallOfFameComputer: ; 7405c (1d:405c) + callba AnimateHallOfFame + call ClearScreen + ld c, $64 + call DelayFrames + call DisableLCD + ld hl, $8800 + ld bc, $400 + call Func_74171 + ld hl, $9600 + ld bc, $100 + call Func_74171 + ld hl, $97e0 + ld bc, $10 + ld a, $ff + call FillMemory + ld hl, wTileMap + call Func_7417b + FuncCoord 0, 14 ; $c4b8 + ld hl, Coord + call Func_7417b + ld a, $c0 + ld [rBGP], a ; $ff47 + call EnableLCD + ld a, $ff + call PlaySoundWaitForCurrent + ld c, BANK(Music_Credits) + ld a, MUSIC_CREDITS + call PlayMusic + ld c, $80 + call DelayFrames + xor a + ld [wWhichTrade], a ; $cd3d + ld [$cd3e], a + jp Credits + +Func_740ba: ; 740ba (1d:40ba) + ld hl, DataTable_74160 ; $4160 + ld b, $4 +.asm_740bf + ld a, [hli] + ld [rBGP], a ; $ff47 + ld c, $5 + call DelayFrames + dec b + jr nz, .asm_740bf + ret + +DisplayCreditsMon: ; 740cb (1d:40cb) + xor a + ld [H_AUTOBGTRANSFERENABLED],a + call SaveScreenTilesToBuffer1 + call FillMiddleOfScreenWithWhite + + ; display the next monster from CreditsMons + ld hl,$CD3E + ld c,[hl] ; how many monsters have we displayed so far? + inc [hl] + ld b,0 + ld hl,CreditsMons + add hl,bc ; go that far in the list of monsters and get the next one + ld a,[hl] + ld [$CF91],a + ld [$D0B5],a + FuncCoord 8, 6 ; $c420 + ld hl,Coord + call GetMonHeader + call LoadFrontSpriteByMonIndex + ld hl,$980C + call Func_74164 + xor a + ld [H_AUTOBGTRANSFERENABLED],a + call LoadScreenTilesFromBuffer1 + ld hl,$9800 + call Func_74164 + ld a,$A7 + ld [$FF4B],a + ld hl,$9C00 + call Func_74164 + call FillMiddleOfScreenWithWhite + ld a,$FC + ld [$FF47],a + ld bc,7 +.next + call Func_74140 + dec c + jr nz,.next + ld c,$14 +.next2 + call Func_74140 + ld a,[$FF4B] + sub 8 + ld [$FF4B],a + dec c + jr nz,.next2 + xor a + ld [$FFB0],a + ld a,$C0 + ld [$FF47],a + ret + +INCLUDE "data/credit_mons.asm" + +Func_74140: ; 74140 (1d:4140) + ld h, b + ld l, $20 + call Func_74152 + ld h, $0 + ld l, $70 + call Func_74152 + ld a, b + add $8 + ld b, a + ret + +Func_74152: ; 74152 (1d:4152) + ld a, [$ff44] + cp l + jr nz, Func_74152 + ld a, h + ld [rSCX], a ; $ff43 +.asm_7415a + ld a, [$ff44] + cp h + jr z, .asm_7415a + ret + +DataTable_74160: ; 74160 (1d:4160) + db $C0,$D0,$E0,$F0 + +Func_74164: ; 74164 (1d:4164) + ld a, l + ld [H_AUTOBGTRANSFERDEST], a ; $ffbc + ld a, h + ld [$ffbd], a + ld a, $1 + ld [H_AUTOBGTRANSFERENABLED], a ; $ffba + jp Delay3 + +Func_74171: ; 74171 (1d:4171) + ld [hl], $0 + inc hl + inc hl + dec bc + ld a, b + or c + jr nz, Func_74171 + ret + +Func_7417b: ; 7417b (1d:417b) + ld bc, $50 + ld a, $7e + jp FillMemory + +FillMiddleOfScreenWithWhite: ; 74183 (1d:4183) + FuncCoord 0, 4 ; $c3f0 + ld hl, Coord + ld bc, $c8 ; 10 rows of 20 tiles each + ld a, $7f ; blank white tile + jp FillMemory + +Credits: ; 7418e (1d:418e) + ld de, CreditsOrder ; $4243 + push de +.asm_74192 + pop de + FuncCoord 9, 6 ; $c421 + ld hl, Coord + push hl + call FillMiddleOfScreenWithWhite + pop hl +.asm_7419b + ld a, [de] + inc de + push de + cp $ff + jr z, .asm_741d5 + cp $fe + jr z, .asm_741dc + cp $fd + jr z, .asm_741e6 + cp $fc + jr z, .asm_741ed + cp $fb + jr z, .asm_741f4 + cp $fa + jr z, .showTheEnd + push hl + push hl + ld hl, CreditsTextPointers ; $42c3 + add a + ld c, a + ld b, $0 + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + ld a, [de] + inc de + ld c, a + ld b, $ff + pop hl + add hl, bc + call PlaceString + pop hl + ld bc, $28 + add hl, bc + pop de + jr .asm_7419b +.asm_741d5 + call Func_740ba + ld c, $5a + jr .asm_741de +.asm_741dc + ld c, $6e +.asm_741de + call DelayFrames + call DisplayCreditsMon + jr .asm_74192 +.asm_741e6 + call Func_740ba + ld c, $78 + jr .asm_741ef +.asm_741ed + ld c, $8c +.asm_741ef + call DelayFrames + jr .asm_74192 +.asm_741f4 + push de + callba LoadCopyrightTiles + pop de + pop de + jr .asm_7419b +.showTheEnd + ld c, $10 + call DelayFrames + call FillMiddleOfScreenWithWhite + pop de + ld de, TheEndGfx + ld hl, $9600 + ld bc, (BANK(TheEndGfx) << 8) + $0a + call CopyVideoData + FuncCoord 4, 8 ; $c444 + ld hl, Coord + ld de, UnnamedText_74229 ; $4229 + call PlaceString + FuncCoord 4, 9 ; $c458 + ld hl, Coord + inc de + call PlaceString + jp Func_740ba + +UnnamedText_74229: ; 74229 (1d:4229) + db $60," ",$62," ",$64," ",$64," ",$66," ",$68,"@" + db $61," ",$63," ",$65," ",$65," ",$67," ",$69,"@" + +INCLUDE "data/credits_order.asm" + +INCLUDE "text/credits_text.asm" + +TheEndGfx: ; 7473e (1d:473e) ; 473E (473F on blue) + INCBIN "gfx/theend.w40.interleave.2bpp" |