summaryrefslogtreecommitdiff
path: root/home.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home.asm')
-rw-r--r--home.asm1855
1 files changed, 27 insertions, 1828 deletions
diff --git a/home.asm b/home.asm
index a76992d3..9f0633e6 100644
--- a/home.asm
+++ b/home.asm
@@ -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"