diff options
Diffstat (limited to 'home.asm')
-rw-r--r-- | home.asm | 1855 |
1 files changed, 27 insertions, 1828 deletions
@@ -1,19 +1,15 @@ -INCLUDE "contents.asm" INCLUDE "constants.asm" -; rst vectors -INCLUDE "home/rst.asm" -INCLUDE "home/interrupts.asm" +SECTION "NULL", ROM0 +NULL:: -SECTION "start", ROM0 -Start:: - nop - jp _Start +INCLUDE "home/header.asm" + +SECTION "Home", ROM0 -SECTION "bank0", ROM0 INCLUDE "home/vblank.asm" INCLUDE "home/delay.asm" -INCLUDE "home/rtc.asm" +INCLUDE "home/time_palettes.asm" INCLUDE "home/fade.asm" INCLUDE "home/lcd.asm" INCLUDE "home/time.asm" @@ -22,1841 +18,44 @@ INCLUDE "home/serial.asm" INCLUDE "home/joypad.asm" INCLUDE "home/decompress.asm" INCLUDE "home/palettes.asm" -INCLUDE "home/copy.asm" +INCLUDE "home/gfx.asm" INCLUDE "home/text.asm" INCLUDE "home/video.asm" INCLUDE "home/map_objects.asm" INCLUDE "home/sine.asm" INCLUDE "home/movement.asm" -INCLUDE "home/tilemap.asm" INCLUDE "home/menu.asm" -INCLUDE "home/handshake.asm" +INCLUDE "home/printer.asm" INCLUDE "home/game_time.asm" INCLUDE "home/map.asm" - -InexplicablyEmptyFunction:: ; 2e16 -; Inexplicably empty. -; Seen in PredefPointers. - rept 16 - nop - endr - ret - INCLUDE "home/farcall.asm" INCLUDE "home/predef.asm" INCLUDE "home/window.asm" INCLUDE "home/flag.asm" - -Function2f7b:: - ld a, [wMonStatusFlags] - bit 1, a - ret z - ld a, [hJoyDown] - bit 1, a - ret - -xor_a:: - xor a - ret - -xor_a_dec_a:: - xor a - dec a - ret - -Function2f8b:: - push hl - ld hl, wMonStatusFlags - bit 1, [hl] - pop hl - ret - -DisableSpriteUpdates:: ; 2f93 (0:2f93) - xor a - ld [hMapAnims], a - ld a, [wVramState] - res 0, a - ld [wVramState], a - ld a, $0 - ld [wRTCEnabled], a - ret - -EnableSpriteUpdates:: ; 2fa4 (0:2fa4) - ld a, $1 - ld [wRTCEnabled], a - ld a, [wVramState] - set 0, a - ld [wVramState], a - ld a, $1 - ld [hMapAnims], a - ret - +INCLUDE "home/sprite_updates.asm" INCLUDE "home/string.asm" - -IsInJohto:: - ld a, [wMapGroup] - ld b, a - ld a, [wMapNumber] - ld c, a - call GetWorldMapLocation - cp $5e - jr z, .asm_2ff9 - cp $0 - jr nz, .asm_2ff5 - ld a, [wd9f6] - ld b, a - ld a, [wd9f7] - ld c, a - call GetWorldMapLocation -.asm_2ff5 - cp $2e - jr nc, .asm_2ffb -.asm_2ff9 - xor a - ret - -.asm_2ffb - ld a, $1 - ret - -Function2ffe:: ; 2ffe (0:2ffe) - push hl - xor a - ld hl, wd17c - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld a, [wd17a] - ld l, a - ld a, [wd17b] - ld h, a - or l - jr z, .quit - ld a, [hROMBank] - push af - call SwitchToMapScriptHeaderBank - ld a, [wPlayerStandingMapX] - add $4 - ld d, a - ld a, [wPlayerStandingMapY] - ld a, $4 ; add $4 - ld e, a - push bc - ld c, $0 -.loop - ld a, [hl] - cp $ff - jr z, .done - push hl - ld a, d - cp [hl] - jr nz, .next - inc hl - ld a, e - cp [hl] - jr nz, .next - ld hl, wd17c - ld b, SET_FLAG - push de - push bc - ld d, $0 - predef SmallFarFlagAction - pop bc - pop de -.next - pop hl - inc hl - inc hl - inc hl - inc c - ld a, c - cp $20 - jr c, .loop -.done - pop bc - pop af - rst Bankswitch -.quit - pop hl - ret - +INCLUDE "home/region.asm" INCLUDE "home/item.asm" INCLUDE "home/random.asm" INCLUDE "home/sram.asm" - -jp_hl:: - jp hl - -jp_de:: - push de - ret - -ClearSprites:: ; 30ff (0:30ff) - ld hl, wVirtualOAM - ld b, $a0 - xor a -.asm_3105 - ld [hli], a - dec b - jr nz, .asm_3105 - ret - -HideSprites:: - ld hl, wVirtualOAM - ld de, $4 - ld b, $28 - ld a, $a0 -.asm_3114 - ld [hl], a - add hl, de - dec b - jr nz, .asm_3114 - ret - -INCLUDE "home/copy2.asm" - -BackUpTilesToBuffer:: - hlcoord 0, 0 - decoord 0, 0, wTileMapBackup - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - jp CopyBytes - -ReloadTilesFromBuffer:: - xor a - ld [hBGMapMode], a - call ReloadTilesFromBuffer_ - ld a, $1 - ld [hBGMapMode], a - ret - -ReloadTilesFromBuffer_:: - hlcoord 0, 0, wTileMapBackup - decoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - jp CopyBytes - -Function317b:: ; 317b (0:317b) - ld hl, wStringBuffer2 -CopyName2:: - ld a, [de] - inc de - ld [hli], a - cp "@" - jr nz, CopyName2 - ret - -IsInArray:: - ld b, $0 - ld c, a -.asm_3189 - ld a, [hl] - cp $ff - jr z, .asm_3195 - cp c - jr z, .asm_3197 - inc b - add hl, de - jr .asm_3189 -.asm_3195 - and a - ret -.asm_3197 - scf - ret - +INCLUDE "home/call_regs.asm" +INCLUDE "home/clear_sprites.asm" +INCLUDE "home/copy.asm" +INCLUDE "home/copy_tilemap.asm" +INCLUDE "home/copy_name.asm" +INCLUDE "home/array.asm" INCLUDE "home/math.asm" - -Function31e2:: ; 31e2 (0:31e2) - ld a, [wOptions] - bit 4, a - ret nz - ld a, [wTextboxFlags] - bit 1, a - ret z - push hl - push de - push bc - ld hl, hOAMUpdate - ld a, [hl] - push af - ld [hl], a - ld a, [wTextboxFlags] - bit 0, a - jr z, .asm_3205 - ld a, [wOptions] - and $7 - jr .asm_3207 - -.asm_3205 - ld a, $1 -.asm_3207 - ld [wTextDelayFrames], a -.asm_320a - call GetJoypad - ld a, [wc1d6] - and a - jr nz, .asm_3224 - ld a, [hJoyDown] - bit 0, a - jr z, .asm_321b - jr .asm_321f - -.asm_321b - bit 1, a - jr z, .asm_3224 -.asm_321f - call DelayFrame - jr .asm_322a - -.asm_3224 - ld a, [wTextDelayFrames] - and a - jr nz, .asm_320a -.asm_322a - pop af - ld [hOAMUpdate], a - pop bc - pop de - pop hl - ret - -Function3231:: -.asm_3231 - ld a, [hli] - ld [de], a - inc de - ld a, h - cp b - jr nz, .asm_3231 - ld a, l - cp c - jr nz, .asm_3231 - ret - -PrintNum:: ; 323d (0:323d) - push bc - bit 5, b - jr z, .asm_324f - bit 7, b - jr nz, .asm_324a - bit 6, b - jr z, .asm_324f -.asm_324a - ld a, $f0 - ld [hli], a - res 5, b -.asm_324f - xor a - ld [hPrintNum1], a - ld [hMultiplicand], a - ld [hStringCmpString2], a - ld a, b - and $f - cp $1 - jr z, .asm_3277 - cp $2 - jr z, .asm_326e - ld a, [de] - ld [hQuotient], a - inc de - ld a, [de] - ld [hPrintNum3], a - inc de - ld a, [de] - ld [hPrintNum4], a - jr .asm_327a - -.asm_326e - ld a, [de] - ld [hStringCmpString2], a - inc de - ld a, [de] - ld [hPrintNum4], a - jr .asm_327a - -.asm_3277 - ld a, [de] - ld [hPrintNum4], a -.asm_327a - push de - ld d, b - ld a, c - swap a - and $f - ld e, a - ld a, c - and $f - ld b, a - ld c, $0 - cp $2 - jr z, .asm_32f2 - cp $3 - jr z, .asm_32e2 - cp $4 - jr z, .asm_32d1 - cp $5 - jr z, .asm_32c0 - cp $6 - jr z, .asm_32ae - ld a, $f - ld [hMultiplier], a - ld a, $42 - ld [hPrintNum6], a - ld a, $40 - ld [hPrintNum7], a - call Function3341 - call Function33c0 -.asm_32ae - ld a, $1 - ld [hPrintNum5], a - ld a, $86 - ld [hPrintNum6], a - ld a, $a0 - ld [hPrintNum7], a - call Function3341 - call Function33c0 -.asm_32c0 - xor a - ld [hRemainder], a - ld a, $27 - ld [hMathBuffer], a - ld a, $10 - ld [hPrintNum7], a - call Function3341 - call Function33c0 -.asm_32d1 - xor a - ld [hMultiplier], a - ld a, $3 - ld [hPrintNum6], a - ld a, $e8 - ld [hPrintNum7], a - call Function3341 - call Function33c0 -.asm_32e2 - xor a - ld [hMultiplier], a - xor a - ld [hMathBuffer], a - ld a, $64 - ld [hPrintNum7], a - call Function3341 - call Function33c0 -.asm_32f2 - dec e - jr nz, .asm_32f9 - ld a, $f6 - ld [hPastLeadingZeroes], a -.asm_32f9 - ld c, $0 - ld a, [hPrintNum4] -.asm_32fd - cp $a - jr c, .asm_3306 - sub $a - inc c - jr .asm_32fd - -.asm_3306 - ld b, a - ld a, [hPrintNum1] - or c - jr nz, .asm_3311 - call Function33ba - jr .asm_3323 - -.asm_3311 - call Function3330 - push af - ld a, $f6 - add c - ld [hl], a - pop af - ld [hDividend], a - inc e - dec e - jr nz, .asm_3323 - inc hl - ld [hl], $e8 -.asm_3323 - call Function33c0 - call Function3330 - ld a, $f6 - add b - ld [hli], a - pop de - pop bc - ret - -Function3330:: ; 3330 (0:3330) - push af - ld a, [hPastLeadingZeroes] - and a - jr nz, .asm_333f - bit 5, d - jr z, .asm_333f - ld a, $f0 - ld [hli], a - res 5, d -.asm_333f - pop af - ret - -Function3341:: ; 3341 (0:3341) - dec e - jr nz, .asm_3348 - ld a, $f6 - ld [hProduct], a -.asm_3348 - ld c, $0 -.asm_334a - ld a, [hPrintNum5] - ld b, a - ld a, [hMultiplicand] - ld [hPrintNum8], a - cp b - jr c, .asm_339a - sub b - ld [hPrintNum2], a - ld a, [hPrintNum6] - ld b, a - ld a, [hPrintNum3] - ld [hPrintNum9], a - cp b - jr nc, .asm_336c - ld a, [hPrintNum2] - or $0 - jr z, .asm_3396 - dec a - ld [hPrintNum2], a - ld a, [hStringCmpString2] -.asm_336c - sub b - ld [hPrintNum3], a - ld a, [hPrintNum7] - ld b, a - ld a, [hPrintNum4] - ld [hPrintNum10], a - cp b - jr nc, .asm_338c - ld a, [hStringCmpString2] - and a - jr nz, .asm_3387 - ld a, [hQuotient] - and a - jr z, .asm_3392 - dec a - ld [hMultiplicand], a - xor a -.asm_3387 - dec a - ld [hPrintNum3], a - ld a, [hPrintNum4] -.asm_338c - sub b - ld [hPrintNum4], a - inc c - jr .asm_334a - -.asm_3392 - ld a, [hPrintNum9] - ld [hStringCmpString2], a -.asm_3396 - ld a, [hPrintNum8] - ld [hPrintNum2], a -.asm_339a - ld a, [hDividend] - or c - jr z, Function33ba - ld a, [hPrintNum1] - and a - jr nz, .asm_33ad - bit 5, d - jr z, .asm_33ad - ld a, $f0 - ld [hli], a - res 5, d -.asm_33ad - ld a, $f6 - add c - ld [hl], a - ld [hPrintNum1], a - inc e - dec e - ret nz - inc hl - ld [hl], $e8 - ret - -Function33ba:: ; 33ba (0:33ba) - bit 7, d - ret z - ld [hl], $f6 - ret - -Function33c0:: ; 33c0 (0:33c0) - bit 7, d - jr nz, .asm_33cc - bit 6, d - jr z, .asm_33cc - ld a, [hProduct] - and a - ret z -.asm_33cc - inc hl - ret - -Function33ce:: -; Print c-digit hex number from de to hl -.asm_33ce - push bc - call Function33d7 - pop bc - dec c - jr nz, .asm_33ce - ret - -Function33d7:: ; 33d7 (0:33d7) - ld a, [de] - swap a - and $f - call Function33e9 - ld [hli], a - ld a, [de] - and $f - call Function33e9 - ld [hli], a - inc de - ret - -Function33e9:: ; 33e9 (0:33e9) - ld bc, .digits - add c - ld c, a - ld a, $0 - adc b - ld b, a - ld a, [bc] - ret - -.digits db "0123456789ABCDEF" - -FarPrintText:: - ld [wBuffer], a - ld a, [hROMBank] - push af - ld a, [wBuffer] - rst Bankswitch - call PrintText - pop af - rst Bankswitch - ret - -Function3414:: - ld a, [hROMBank] - push af - ld a, [hli] - rst Bankswitch - ld a, [hli] - ld h, [hl] - ld l, a - call jp_hl - pop hl - ld a, h - rst Bankswitch - ret - -QueueScript:: - ld a, [hROMBank] -Function3425:: - ld [wcfd8], a - ld a, l - ld [wcfd9], a - ld a, h - ld [wcfda], a - ret - -Function3431:: -.asm_3431 - ld a, [de] - cp [hl] - ret nz - inc de - inc hl - dec c - jr nz, .asm_3431 - ret - -Function343a:: -.asm_343a - ld a, [de] - cp [hl] - jr nz, .asm_3447 - inc de - inc hl - dec bc - ld a, b - or c - jr nz, .asm_343a - scf - ret - -.asm_3447 - and a - ret - -ClearBGPalettes:: - call ClearPalettes -WaitBGMap:: ; 344c (0:344c) - ld a, $1 - ld [hBGMapMode], a - ld c, $4 - call DelayFrames - ret - -Function3456:: ; 3456 (0:3456) - ld a, [hCGB] - and a - jr z, .asm_3464 - ld a, $2 - ld [hBGMapMode], a - ld c, $4 - call DelayFrames -.asm_3464 - ld a, $1 - ld [hBGMapMode], a - ld c, $4 - call DelayFrames - ret - -IsCGB:: - ld a, [hCGB] - and a - ret - -ApplyTilemap:: ; 3472 (0:3472) - ld a, [hCGB] - and a - jr z, .asm_3484 - ld a, [wRTCEnabled] - cp $0 - jr z, .asm_3484 - ld a, $1 - ld [hBGMapMode], a - jr LoadEDTile - -.asm_3484 - ld a, $1 - ld [hBGMapMode], a - ld c, $4 - call DelayFrames - ret - -CGBOnly_LoadEDTile:: ; 348e (0:348e) - ld a, [hCGB] - and a - jr z, WaitBGMap -LoadEDTile:: - ld a, [hBGMapMode] - push af - xor a - ld [hBGMapMode], a - ld a, [hMapAnims] - push af - xor a - ld [hMapAnims], a -.asm_349f - ld a, [rLY] - cp $7f - jr c, .asm_349f - di - ld a, $1 - ld [rVBK], a - ld hl, wAttrMap - call Function34c8 - ld a, $0 - ld [rVBK], a - ld hl, wTileMap - call Function34c8 -.asm_34ba - ld a, [rLY] - cp $7f - jr c, .asm_34ba - ei - pop af - ld [hMapAnims], a - pop af - ld [hBGMapMode], a - ret - -Function34c8:: ; 34c8 (0:34c8) - ld [hSPBuffer], sp - ld sp, hl - ld a, [hBGMapAddress + 1] - ld h, a - ld l, $0 - ld a, $12 - ld [hTilesPerCycle], a - ld b, $2 - ld c, rSTAT % $100 -.asm_34d9 -rept 10 - pop de -.loop_\@ - ld a, [$ff00+c] - and b - jr nz, .loop_\@ - ld [hl], e - inc l - ld [hl], d - inc l -endr - ld de, $c - add hl, de - ld a, [hTilesPerCycle] - dec a - ld [hTilesPerCycle], a - jr nz, .asm_34d9 - ld a, [hSPBuffer] - ld l, a - ld a, [hSPBuffer + 1] - ld h, a - ld sp, hl - ret - -SetPalettes:: - ld a, [hCGB] - and a - jr nz, .asm_3556 - ld a, $e4 - ld [rBGP], a - ld a, $d0 - ld [rOBP0], a - ld [rOBP1], a - ret - -.asm_3556 - push de - ld a, $e4 - call DmgToCgbBGPals - ld de, $e4e4 - call DmgToCgbObjPals - pop de - ret - -ClearPalettes:: ; 3564 (0:3564) - ld a, [hCGB] - and a - jr nz, .asm_3571 - xor a - ld [rBGP], a - ld [rOBP0], a - ld [rOBP1], a - ret - -.asm_3571 - ld hl, wBGPals - ld bc, $80 - ld a, $ff - call ByteFill - ld a, $1 - ld [hCGBPalUpdate], a - ret - -GetMemSGBLayout:: - ld b, $ff -GetSGBLayout:: ; 3583 (0:3583) - ld a, [hCGB] - and a - jr nz, .asm_358c - ld a, [hSGB] - and a - ret z -.asm_358c - predef_jump LoadSGBLayout - -SetHPPal:: - call GetHPPal - ld [hl], d - ret - -GetHPPal:: ; 3596 (0:3596) - ld d, $0 - ld a, e - cp $18 - ret nc - inc d - cp $a - ret nc - inc d - ret - -CountSetBits:: - ld c, $0 -.asm_35a4 - ld a, [hli] - ld e, a - ld d, $8 -.asm_35a8 - srl e - ld a, $0 - adc c - ld c, a - dec d - jr nz, .asm_35a8 - dec b - jr nz, .asm_35a4 - ld a, c - ld [wd151], a - ret - -GetWeekday:: - ld a, [wCurDay] -.mod - sub 7 - jr nc, .mod - add 7 - ret - +INCLUDE "home/print_text.asm" +INCLUDE "home/queue_script.asm" +INCLUDE "home/compare.asm" +INCLUDE "home/tilemap.asm" INCLUDE "home/pokedex_flags.asm" - -NamesPointers:: ; 35ee (0:35ee) - dba PokemonNames - dba MoveNames - dbw 0, 0 - dba ItemNames - dbw 0, wPartyMonOT - dbw 0, $de7d - dba TrainerClassNames - dba DoPlayerMovement - -GetName:: ; 3606 - ld a, [hROMBank] - push af - push hl - push bc - push de - ld a, [wce61] - cp $1 - jr nz, .asm_3624 - ld a, [wCurSpecies] - ld [wd151], a - call GetPokemonName - ld hl, $b - add hl, de - ld e, l - ld d, h - jr .asm_3646 -.asm_3624 - ld a, [wce61] - dec a - ld e, a - ld d, $0 - ld hl, NamesPointers - add hl, de - add hl, de - add hl, de - ld a, [hli] - rst Bankswitch - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wCurSpecies] - dec a - call GetNthString - ld de, wStringBuffer1 - ld bc, $d - call CopyBytes -.asm_3646 - ld a, e - ld [wcffe], a - ld a, d - ld [wcfff], a - pop de - pop bc - pop hl - pop af - rst Bankswitch - ret - -GetNthString:: ; 3654 (0:3654) - and a - ret z - push bc - ld b, a - ld c, "@" -.asm_365a - ld a, [hli] - cp c - jr nz, .asm_365a - dec b - jr nz, .asm_365a - pop bc - ret - -GetBasePokemonName:: - push hl - call GetPokemonName - ld hl, wStringBuffer1 -.loop - ld a, [hl] - cp "@" - jr z, .quit - cp "♂" - jr z, .end - cp "♀" - jr z, .end - inc hl - jr .loop -.end - ld [hl], "@" -.quit - pop hl - ret - -GetPokemonName:: ; 367e (0:367e) - ld a, [hROMBank] - push af - push hl - ld a, BANK(PokemonNames) - rst Bankswitch - ld a, [wd151] - dec a - ld hl, PokemonNames - ld e, a - ld d, $0 -rept MON_NAME_LENGTH +- 1 - add hl, de -endr - ld de, wStringBuffer1 - push de - ld bc, MON_NAME_LENGTH - 1 - call CopyBytes - ld hl, wStringBuffer1 + MON_NAME_LENGTH - 1 - ld [hl], "@" - pop de - pop hl - pop af - rst Bankswitch - ret - -GetItemName:: - push hl - push bc - ld a, [wd151] - cp TM01 - jr nc, .TM - ld [wCurSpecies], a - ld a, $4 - ld [wce61], a - call GetName - jr .copied - -.TM - call GetTMHMName -.copied - ld de, wStringBuffer1 - pop bc - pop hl - ret - -GetTMHMName:: ; 36cc (0:36cc) - push hl - push de - push bc - ld a, [wd151] - push af - cp HM01 - push af - jr c, .TM - ld hl, .HMText ; $3721 - ld bc, $2 - jr .copy - -.TM - ld hl, .TMText ; $371e - ld bc, $2 -.copy - ld de, wStringBuffer1 - call CopyBytes - push de - ld a, [wd151] - ld c, a - callfar GetTMHMNumber - pop de - pop af - ld a, c - jr c, .not_hm - sub NUM_TMS -.not_hm - ld b, "0" -.mod10 - sub 10 - jr c, .done_mod - inc b - jr .mod10 - -.done_mod - add 10 - push af - ld a, b - ld [de], a - inc de - pop af - ld b, "0" - add b - ld [de], a - inc de - ld a, "@" - ld [de], a - pop af - ld [wd151], a - pop bc - pop de - pop hl - ret - -.TMText db "TM@" -.HMText db "HM@" - -IsHM:: - cp HM01 - jr c, .not_HM - scf - ret - -.not_HM - and a - ret - -IsHMMove:: - ld hl, .HMMoves - ld de, $1 - jp IsInArray - -.HMMoves - db CUT, FLY, SURF, STRENGTH, FLASH, WATERFALL, WHIRLPOOL, $FF - -GetMoveName:: - push hl - ld a, $2 - ld [wce61], a - ld a, [wd151] - ld [wCurSpecies], a - call GetName - ld de, wStringBuffer1 - pop hl - ret - -ScrollingMenu:: - call CopyMenuData2 - ld a, [hROMBank] - push af - ld a, BANK(ScrollingMenu_) - rst Bankswitch - call InitScrollingMenu - call ScrollingMenuUpdatePalettes - call ScrollingMenu_ - pop af - rst Bankswitch - ld a, [wMenuJoypad] - ret - -ScrollingMenuUpdatePalettes:: ; 3769 (0:3769) - ld hl, wVramState - bit 0, [hl] - jp nz, UpdateTimePals - jp SetPalettes - -DrawScrollingMenu:: - ld a, [wMenuBorderTopCoord] - dec a - ld b, a - ld a, [wMenuBorderBottomCoord] - sub b - ld d, a - ld a, [wMenuBorderLeftCoord] - dec a - ld c, a - ld a, [wMenuBorderRightCoord] - sub c - ld e, a - push de - call Coord2Tile - pop bc - jp Textbox - -ScrollingMenuJoyTextDelay:: - call DelayFrame - ld a, [hInMenu] - push af - ld a, $1 - ld [hInMenu], a - call JoyTextDelay - pop af - ld [hInMenu], a - ld a, [hJoyLast] - and $f0 - ld c, a - ld a, [hJoyPressed] - and $f - or c - ld c, a - ret - -HandleStoneQueue:: - ld a, [hROMBank] - push af - call SwitchToMapScriptHeaderBank - call StoneQueueWarpAction - pop bc - ld a, b - rst Bankswitch - ret - -StoneQueueWarpAction:: ; 37b9 (0:37b9) - ld hl, $1 - add hl, de - ld a, [hl] - cp $ff - jr z, .asm_37dc - ld l, a - push hl - call IsAnyMapObjectOnAWarp - pop hl - jr nc, .asm_37dc - ld d, a - ld e, l - call IsThisObjectInTheStoneTable - jr nc, .asm_37dc - call CallMapScript - farcall EnableScriptMode - scf - ret - -.asm_37dc - and a - ret - -IsAnyMapObjectOnAWarp:: ; 37de (0:37de) - push de - ld hl, $10 - add hl, de - ld a, [hl] - ld hl, $11 - add hl, de - ld e, [hl] - sub $4 - ld d, a - ld a, e - sub $4 - ld e, a - call IsThisMapObjectOnAWarp - pop de - ret - -IsThisMapObjectOnAWarp:: ; 37f5 (0:37f5) - ld hl, wCurrMapWarpHeaderPointer - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wCurrMapWarpCount] - and a - jr z, .no_warps -.find_warp_loop - push af - ld a, [hl] - cp e - jr nz, .next - inc hl - ld a, [hld] - cp d - jr nz, .next - jr .yes - -.next - ld a, $5 - add l - ld l, a - jr nc, .asm_3814 - inc h -.asm_3814 - pop af - dec a - jr nz, .find_warp_loop -.no_warps - and a - ret - -.yes - pop af - ld d, a - ld a, [wCurrMapWarpCount] - sub d - inc a - scf - ret - -IsThisObjectInTheStoneTable:: ; 3823 (0:3823) - ld hl, $1 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a -.asm_382a - ld a, [hli] - cp $ff - jr z, .asm_3840 - cp d - jr nz, .asm_383b - ld a, [hli] - cp e - jr nz, .asm_383c - ld a, [hli] - ld h, [hl] - ld l, a - jr .asm_3842 - -.asm_383b - inc hl -.asm_383c - inc hl - inc hl - jr .asm_382a - -.asm_3840 - and a - ret - -.asm_3842 - scf - ret - -CheckTrainerBattle2:: - ld a, [hROMBank] - push af - call SwitchToMapScriptHeaderBank - call CheckTrainerBattle - pop bc - ld a, b - rst Bankswitch - ret - -CheckTrainerBattle:: ; 3851 (0:3851) - ld a, $2 - ld de, wMap2Object -.asm_3856 - push af - push de - ld hl, $1 - add hl, de - ld a, [hl] - and a - jr z, .asm_389b - ld hl, $8 - add hl, de - ld a, [hl] - and $f - cp $2 - jr nz, .asm_389b - ld hl, MBC3SRamEnable - add hl, de - ld a, [hl] - cp $ff - jr z, .asm_389b - call GetObjectStruct - call FacingPlayerDistance_bc - jr nc, .asm_389b - ld hl, $9 - add hl, de - ld a, [hl] - cp b - jr c, .asm_389b - push bc - push de - ld hl, $a - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - ld e, [hl] - inc hl - ld d, [hl] - ld b, $2 - call EventFlagAction - ld a, c - pop de - pop bc - and a - jr z, .asm_38aa -.asm_389b - pop de - ld hl, $10 - add hl, de - ld d, h - ld e, l - pop af - inc a - cp $10 - jr nz, .asm_3856 - xor a - ret - -.asm_38aa - pop de - pop af - ld [hLastTalked], a - ld a, b - ld [wcf2a], a - ld a, c - ld [wcf2b], a - jr continue_trainer_function - -TalkToTrainer:: - ld a, $1 - ld [wcf2a], a - ld a, $ff - ld [wcf2b], a -continue_trainer_function - call GetMapScriptHeaderBank - ld [wcf29], a - ld a, [hLastTalked] - call GetMapObject - ld hl, $a - add hl, bc - ld a, [wcf29] - call GetFarHalfword - ld de, wcf2c - ld bc, $d - ld a, [wcf29] - call FarCopyBytes - xor a - ld [wcf38], a - scf - ret - -FacingPlayerDistance_bc:: ; 38e9 (0:38e9) - push de - call FacingPlayerDistance - ld b, d - ld c, e - pop de - ret - -FacingPlayerDistance:: ; 38f1 (0:38f1) - ld hl, $10 - add hl, bc - ld d, [hl] - ld hl, $11 - add hl, bc - ld e, [hl] - ld a, [wPlayerStandingMapX] - cp d - jr z, .asm_3909 - ld a, [wPlayerStandingMapY] - cp e - jr z, .asm_391d - and a - ret - -.asm_3909 - ld a, [wPlayerStandingMapY] - sub e - jr z, .asm_3937 - jr nc, .asm_3918 - cpl - inc a - ld d, a - ld e, $4 - jr .asm_392f - -.asm_3918 - ld d, a - ld e, $0 - jr .asm_392f - -.asm_391d - ld a, [wPlayerStandingMapX] - sub d - jr z, .asm_3937 - jr nc, .asm_392c - cpl - inc a - ld d, a - ld e, $8 - jr .asm_392f - -.asm_392c - ld d, a - ld e, $c -.asm_392f - call GetSpriteDirection - cp e - jr nz, .asm_3937 - scf - ret - -.asm_3937 - and a - ret - -CheckTrainerFlag:: - push bc - ld hl, $1 - add hl, bc - ld a, [hl] - call GetMapObject - ld hl, $a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - call GetMapScriptHeaderBank - call GetFarHalfword - ld d, h - ld e, l - push de - ld b, $2 - call EventFlagAction - pop de - ld a, c - and a - pop bc - ret - -PrintWinLossText:: - ld a, [wBattleType] - cp $1 - jr which_battle_end_text - -PrintWinText:: - ld hl, wWinTextPointer - jr continue_battle_end_text - -which_battle_end_text - ld a, [wBattleResult] - ld hl, wWinTextPointer - and a - jr z, continue_battle_end_text - ld hl, wLossTextPointer -continue_battle_end_text - ld a, [hli] - ld h, [hl] - ld l, a - call GetMapScriptHeaderBank - call FarPrintText - call WaitBGMap - call WaitPressAorB_BlinkCursor - ret - -DrawBattleHPBar:: - push hl - push de - push bc - ld a, $60 - ld [hli], a - ld a, $61 - ld [hli], a - push hl - ld a, $62 -.asm_3990 - ld [hli], a - dec d - jr nz, .asm_3990 - ld a, $6b - add b - ld [hl], a - pop hl - ld a, e - and a - jr nz, .asm_39a3 - ld a, c - and a - jr z, .asm_39b6 - ld e, $1 -.asm_39a3 - ld a, e - sub $8 - jr c, .asm_39b2 - ld e, a - ld a, $6a - ld [hli], a - ld a, e - and a - jr z, .asm_39b6 - jr .asm_39a3 - -.asm_39b2 - ld a, $62 - add e - ld [hl], a -.asm_39b6 - pop bc - pop de - pop hl - ret - -PrepMonFrontpic:: - ld a, $1 - ld [wcf3b], a -PrepMonFrontpic_:: - ld a, [wCurPartySpecies] - and a - jr z, .not_pokemon - cp EGG - jr z, .egg - cp NUM_POKEMON + 1 - jr nc, .not_pokemon -.egg - push hl - ld de, $9000 - predef GetMonFrontpic - pop hl - xor a - ld [hGraphicStartTile], a - lb bc, 7, 7 - predef PlaceGraphic - xor a - ld [wcf3b], a - ret - -.not_pokemon - xor a - ld [wcf3b], a - inc a - ld [wCurPartySpecies], a - ret - -INCLUDE "home/cry.asm" - -PrintLevel:: ; 3a50 - ld a, [wTempMonLevel] - ld [hl], $6e - inc hl - ld c, $2 - cp MAX_LEVEL - jr c, Print8BitNumRightAlign - dec hl - inc c - jr Print8BitNumRightAlign - -PrintLevel_Force3Digits:: - ld [hl], $6e - inc hl - ld c, $3 -Print8BitNumRightAlign:: - ld [wd151], a - ld de, wd151 - ld b, PRINTNUM_RIGHTALIGN | 1 - jp PrintNum - -Function3a70:: - ld hl, wd149 - ld c, a - ld b, $0 - add hl, bc - ld a, [hl] - ret - -GetBaseData:: - push bc - push de - push hl - ld a, [hROMBank] - push af - ld a, BANK(BaseData) ; $14 - rst Bankswitch - ld a, [wCurSpecies] - cp EGG - jr z, .egg - dec a - ld bc, $20 - ld hl, BaseData ; $5b0b - call AddNTimes - ld de, wd120 - ld bc, $20 - call CopyBytes - jr .asm_3ab3 - -.egg - ld de, UnknownEggPic ; $7a83 - ln b, 5, 5 - ld hl, wd131 - ld [hl], b - ld hl, wd132 - ld [hl], e - inc hl - ld [hl], d - inc hl - ld [hl], e - inc hl - ld [hl], d - jr .asm_3ab3 - -.asm_3ab3 - ld a, [wCurSpecies] - ld [wd120], a - pop af - rst Bankswitch - pop hl - pop de - pop bc - ret - -GetCurNick:: - ld a, [wCurPartyMon] - ld hl, wPartyMon1Nickname -GetNick:: - push hl - push bc - call SkipNames - ld de, wStringBuffer1 - push de - ld bc, $b - call CopyBytes - pop de - callfar CheckNickErrors - pop bc - pop hl - ret - -PrintBCDNumber:: ; 3ade (0:3ade) - ld b, c - res 7, c - res 6, c - res 5, c - bit 5, b - jr z, .asm_3af0 - bit 7, b - jr nz, .asm_3af0 - ld [hl], $f0 - inc hl -.asm_3af0 - ld a, [de] - swap a - call Function3b15 - ld a, [de] - call Function3b15 - inc de - dec c - jr nz, .asm_3af0 - bit 7, b - jr z, .asm_3b14 - bit 6, b - jr nz, .asm_3b07 - dec hl -.asm_3b07 - bit 5, b - jr z, .asm_3b0e - ld [hl], $f0 - inc hl -.asm_3b0e - ld [hl], $f6 - call Function31e2 - inc hl -.asm_3b14 - ret - -Function3b15:: ; 3b15 (0:3b15) - and $f - and a - jr z, .asm_3b2f - bit 7, b - jr z, .asm_3b29 - bit 5, b - jr z, .asm_3b27 - ld [hl], $f0 - inc hl - res 5, b -.asm_3b27 - res 7, b -.asm_3b29 - add $f6 - ld [hli], a - jp Function31e2 - -.asm_3b2f - bit 7, b - jr z, .asm_3b29 - bit 6, b - ret nz - ld a, $7f - ld [hli], a - ret - -GetPartyParamLocation:: - push bc - ld hl, wPartyMons - ld c, a - ld b, $0 - add hl, bc - ld a, [wCurPartyMon] - call GetPartyLocation - pop bc - ret - -GetPartyLocation:: ; 3b4a (0:3b4a) - ld bc, $30 - jp AddNTimes - -Function3b51:: - push hl - ld a, b - dec a - ld b, $0 - add hl, bc - ld hl, BaseData + 0 - ld bc, $20 - call AddNTimes - pop bc - ld a, BANK(BaseData) - call GetFarHalfword - ld b, l - ld c, h - pop hl - ret - +INCLUDE "home/names.asm" +INCLUDE "home/scrolling_menu.asm" +INCLUDE "home/stone_queue.asm" +INCLUDE "home/trainers.asm" +INCLUDE "home/pokemon.asm" +INCLUDE "home/print_bcd.asm" INCLUDE "home/battle.asm" - -PushLYOverrides:: ; 3d0d - ld a, [hLCDCPointer] - and a - ret z - ld a, wLYOverridesBuffer % $100 - ld [wRequested2bppSource], a - ld a, wLYOverridesBuffer / $100 - ld [wRequested2bppSource + 1], a - ld a, wLYOverrides % $100 - ld [wRequested2bppDest], a - ld a, wLYOverrides / $100 - ld [wRequested2bppDest + 1], a - ld a, $9 - ld [wRequested2bpp], a - ret - -InitAnimatedObjectStruct:: - ld [wAnimatedObjectStructIDBuffer], a - ld a, [hROMBank] - push af - ld a, BANK(InitAnimatedObjectStruct_) ; $23 - rst Bankswitch - ld a, [wAnimatedObjectStructIDBuffer] - call InitAnimatedObjectStruct_ ; $51f7 - pop af - rst Bankswitch - ret - -ReinitAnimatedObjectFrame:: - ld [wAnimatedObjectStructIDBuffer], a - ld a, [hROMBank] - push af - ld a, BANK(ReinitAnimatedObjectFrame_) ; $23 - rst Bankswitch - ld a, [wAnimatedObjectStructIDBuffer] - call ReinitAnimatedObjectFrame_ ; $5332 - pop af - rst Bankswitch - ret - +INCLUDE "home/sprite_anims.asm" INCLUDE "home/audio.asm" |