Function104000:: ; 104000 ld hl, Function104006 jp CallInSafeGFXMode ; 104006 Function104006: ; 104006 decoord 0, 0, AttrMap ld hl, wBackupAttrMap call CutAndPasteAttrMap decoord 0, 0 ld hl, wBackupTilemap call CutAndPasteTilemap ld a, $0 ld [rVBK], a ld hl, wBackupTilemap call Function10419d ld a, $1 ld [rVBK], a ld hl, wBackupAttrMap call Function10419d ret ; 10402d Function10402d:: ; 10402d ld hl, Function104033 jp CallInSafeGFXMode ; 104033 Function104033: ; 104033 decoord 0, 0 ld hl, wBackupTilemap call CutAndPasteTilemap ld a, $0 ld [rVBK], a ld hl, wBackupTilemap call Function10419d ret ; 104047 Function104047: ; 104047 ld hl, Function10404d jp CallInSafeGFXMode ; 10404d Function10404d: ; 10404d decoord 0, 0, AttrMap ld hl, wBackupAttrMap call CutAndPasteAttrMap ld a, $1 ld [rVBK], a ld hl, wBackupAttrMap call Function10419d ret ; 104061 ReloadMapPart:: ; 104061 ld hl, Function104067 jp CallInSafeGFXMode ; 104067 Function104067: ; 104067 decoord 0, 0, AttrMap ld hl, wBackupAttrMap call CutAndPasteAttrMap decoord 0, 0 ld hl, wBackupTilemap call CutAndPasteTilemap call DelayFrame di ld a, [rVBK] push af ld a, $1 ld [rVBK], a ld hl, wBackupAttrMap call Function1041ad ld a, $0 ld [rVBK], a ld hl, wBackupTilemap call Function1041ad pop af ld [rVBK], a ei ret Function104099: ; 104099 ld hl, ReloadMapPart ; useless ld hl, Function1040a2 jp CallInSafeGFXMode ; 1040a2 Function1040a2: ; 1040a2 decoord 0, 0, AttrMap ld hl, wBackupAttrMap call CutAndPasteAttrMap decoord 0, 0 ld hl, wBackupTilemap call CutAndPasteTilemap call DelayFrame di ld a, [rVBK] push af ld a, $1 ld [rVBK], a ld hl, wBackupAttrMap call Function1041c1 ld a, $0 ld [rVBK], a ld hl, wBackupTilemap call Function1041c1 pop af ld [rVBK], a ei ret ; 1040d4 Function1040d4: ; 1040d4 ld hl, Function1040da jp CallInSafeGFXMode ; 1040da Function1040da: ; 1040da ld a, $1 ld [rVBK], a ld a, $3 ld [rSVBK], a ld de, w3_d800 ld a, [hBGMapAddress + 1] ld [rHDMA1], a ld a, [hBGMapAddress] ld [rHDMA2], a ld a, d ld [rHDMA3], a ld a, e ld [rHDMA4], a ld a, $23 ld [hDMATransfer], a call Function1041a4 ret ; 1040fb Function1040fb: ; 1040fb ld hl, Function104101 jp CallInSafeGFXMode ; 104101 Function104101: ; 104101 ld a, $1 ld [rVBK], a ld a, $3 ld [rSVBK], a ld hl, w3_d800 call Function10419d ret ; 104110 Function104110:: ; 104110 ; OpenText ld hl, Function104116 jp CallInSafeGFXMode ; 104116 Function104116: ; 104116 decoord 0, 0, AttrMap ld hl, wBackupAttrMap call CutAndPasteAttrMap decoord 0, 0 ld hl, wBackupTilemap call CutAndPasteTilemap call DelayFrame di ld a, [rVBK] push af ld a, $1 ld [rVBK], a ld hl, wBackupAttrMap call Function1041b7 ld a, $0 ld [rVBK], a ld hl, wBackupTilemap call Function1041b7 pop af ld [rVBK], a ei ret ; 104148 Function104148: ; 104148 (41:4148) ld hl, Function10414e jp CallInSafeGFXMode ; 10414e (41:414e) Function10414e: ; 10414e decoord 0, 0, AttrMap ld hl, wBackupAttrMap call CutAndPasteAttrMap ld c, $ff decoord 0, 0 ld hl, wBackupTilemap call CutAndPasteMap ld a, $1 ld [rVBK], a ld hl, wBackupAttrMap call Function1041ad ld a, $0 ld [rVBK], a ld hl, wBackupTilemap call Function1041ad ret ; 104177 CallInSafeGFXMode: ; 104177 ld a, [hBGMapMode] push af ld a, [hMapAnims] push af xor a ld [hBGMapMode], a ld [hMapAnims], a ld a, [rSVBK] push af ld a, 6 ld [rSVBK], a ld a, [rVBK] push af call ._hl_ pop af ld [rVBK], a pop af ld [rSVBK], a pop af ld [hMapAnims], a pop af ld [hBGMapMode], a ret ; 10419c ._hl_: ; 10419c jp [hl] ; 10419d Function10419d: ; 10419d (41:419d) call Function10424e ld a, $23 ld [hDMATransfer], a Function1041a4: ; 104a14 .asm_1041a4 call DelayFrame ld a, [hDMATransfer] and a jr nz, .asm_1041a4 ret Function1041ad: ; 1041ad (41:41ad) ld a, [hBGMapAddress + 1] ld d, a ld a, [hBGMapAddress] ld e, a ld c, $24 jr Function104209 Function1041b7: ; 1041b7 (41:41b7) ; hBGMapAddress -> de ; $24 -> c ; $7b --> b ld a, [hBGMapAddress + 1] ld d, a ld a, [hBGMapAddress] ld e, a ld c, $24 jr asm_104205 ; 1041c1 (41:41c1) Function1041c1: ; 1041c1 ld a, [hBGMapAddress + 1] ld d, a ld a, [hBGMapAddress] ld e, a ld c, $24 ld a, h ld [rHDMA1], a ld a, l and $f0 ld [rHDMA2], a ld a, d and $1f ld [rHDMA3], a ld a, e and $f0 ld [rHDMA4], a ld a, c dec c or $80 ld b, a ld a, $7f sub c ld d, a .loop1 ld a, [rLY] cp d jr nc, .loop1 .loop2 ld a, [rSTAT] and $3 jr z, .loop2 ld a, b ld [rHDMA5], a ld a, [rLY] inc c ld hl, rLY .loop3 cp [hl] jr z, .loop3 ld a, [hl] dec c jr nz, .loop3 ld hl, rHDMA5 res 7, [hl] ret ; 104205 asm_104205: ld b, $7b jr asm_10420b Function104209: ; LY magic ld b, $7f asm_10420b: ld a, h ld [rHDMA1], a ld a, l and $f0 ; high nybble ld [rHDMA2], a ld a, d and $1f ; lower 5 bits ld [rHDMA3], a ld a, e and $f0 ; high nybble ld [rHDMA4], a ld a, c dec c or $80 ; set 7, a ld e, a ld a, b sub c ld d, a .ly_loop ld a, [rLY] cp d jr nc, .ly_loop di .rstat_loop_1 ld a, [rSTAT] and $3 jr nz, .rstat_loop_1 .rstat_loop_2 ld a, [rSTAT] and $3 jr z, .rstat_loop_2 ld a, e ld [rHDMA5], a ld a, [rLY] inc c ld hl, rLY .final_ly_loop cp [hl] jr z, .final_ly_loop ld a, [hl] dec c jr nz, .final_ly_loop ld hl, rHDMA5 res 7, [hl] ei ret ; 10424e Function10424e: ; 10424e (41:424e) ld a, h ld [rHDMA1], a ld a, l ld [rHDMA2], a ld a, [hBGMapAddress + 1] and $1f ld [rHDMA3], a ld a, [hBGMapAddress] ld [rHDMA4], a ret CutAndPasteTilemap: ; 10425f (41:425f) ld c, " " jr CutAndPasteMap CutAndPasteAttrMap: ; 104263 (41:4263) ld c, $0 CutAndPasteMap: ; 104265 (41:4265) ; back up the value of c to hMapObjectIndexBuffer ld a, [hMapObjectIndexBuffer] push af ld a, c ld [hMapObjectIndexBuffer], a ; for each row on the screen ld c, SCREEN_HEIGHT .loop1 ; for each tile in the row ld b, SCREEN_WIDTH .loop2 ; copy from de to hl ld a, [de] inc de ld [hli], a dec b jr nz, .loop2 ; load the original value of c into hl 12 times ld a, [hMapObjectIndexBuffer] ld b, 12 .loop3 ld [hli], a dec b jr nz, .loop3 dec c jr nz, .loop1 ; restore the original value of hMapObjectIndexBuffer pop af ld [hMapObjectIndexBuffer], a ret _Get2bpp:: ; 104284 ; 2bpp when [rLCDC] & $80 ; switch to WRAM bank 6 ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a push bc push hl ; Copy c tiles of the 2bpp from b:de to wBackupTilemap ld a, b ; bank ld l, c ; number of tiles ld h, $0 rept 4 add hl, hl ; multiply by 16 (16 bytes of a 2bpp = 8 x 8 tile) endr ld b, h ld c, l ld h, d ; address ld l, e ld de, wBackupTilemap call FarCopyBytes pop hl pop bc push bc call DelayFrame pop bc ld d, h ld e, l ld hl, wBackupTilemap call Function104209 ; restore the previous bank pop af ld [rSVBK], a ret ; 1042b2 _Get1bpp:: ; 1042b2 ; 1bpp when [rLCDC] & $80 .loop ld a, c cp $10 jp c, .bankswitch jp z, .bankswitch push bc push hl push de ld c, $10 call .bankswitch pop de ld hl, $80 add hl, de ld d, h ld e, l pop hl lb bc, 1, 0 add hl, bc pop bc ld a, c sub $10 ld c, a jr .loop ; 1042d6 .bankswitch: ; 1042d6 ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a push bc push hl ld a, b ld l, c ld h, $0 rept 3 add hl, hl ; multiply by 8 endr ld c, l ld b, h ld h, d ld l, e ld de, wBackupTilemap call FarCopyBytesDouble_DoubleBankSwitch pop hl pop bc push bc call DelayFrame pop bc ld d, h ld e, l ld hl, wBackupTilemap call Function104209 pop af ld [rSVBK], a ret ; 104303 Function104303: ; 104303 ld hl, Function104309 jp CallInSafeGFXMode ; 104309 Function104309: ld hl, wBackupTilemap decoord 0, 0 call Function10433a ld hl, wBackupTilemap + $80 decoord 0, 0, AttrMap call Function10433a ld a, $1 ld [rVBK], a ld c, $8 ld hl, wBackupTilemap + $80 debgcoord 0, 0, VBGMap1 call Function104209 ld a, $0 ld [rVBK], a ld c, $8 ld hl, wBackupTilemap debgcoord 0, 0, VBGMap1 call Function104209 ret Function10433a: ; 10433a (41:433a) ld b, 4 .outer_loop ld c, SCREEN_WIDTH .inner_loop ld a, [de] ld [hli], a inc de dec c jr nz, .inner_loop ld a, l add $20 - SCREEN_WIDTH ld l, a ld a, h adc $0 ld h, a dec b jr nz, .outer_loop ret ; 104350 ShockEmote: INCBIN "gfx/emotes/shock.2bpp" QuestionEmote: INCBIN "gfx/emotes/question.2bpp" HappyEmote: INCBIN "gfx/emotes/happy.2bpp" SadEmote: INCBIN "gfx/emotes/sad.2bpp" HeartEmote: INCBIN "gfx/emotes/heart.2bpp" BoltEmote: INCBIN "gfx/emotes/bolt.2bpp" SleepEmote: INCBIN "gfx/emotes/sleep.2bpp" FishEmote: INCBIN "gfx/emotes/fish.2bpp" JumpShadowGFX: INCBIN "gfx/misc/shadow.2bpp" FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp" BoulderDustGFX: INCBIN "gfx/misc/boulderdust.2bpp" FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp"