summaryrefslogtreecommitdiff
path: root/home.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home.asm')
-rw-r--r--home.asm1135
1 files changed, 16 insertions, 1119 deletions
diff --git a/home.asm b/home.asm
index 75b5bf283..1963e2f6a 100644
--- a/home.asm
+++ b/home.asm
@@ -37,7 +37,7 @@ INCLUDE "home/video.asm"
INCLUDE "home/map_objects.asm"
INCLUDE "home/sine.asm"
INCLUDE "home/movement.asm"
-INCLUDE "home/tilemap.asm"
+INCLUDE "home/menu_window.asm"
INCLUDE "home/menu.asm"
INCLUDE "home/handshake.asm"
INCLUDE "home/game_time.asm"
@@ -87,64 +87,9 @@ Unreferenced_Function2ecb:: ; 2ecb
ret
; 2ed3
-DisableSpriteUpdates:: ; 0x2ed3
-; disables overworld sprite updating?
- xor a
- ld [hMapAnims], a
- ld a, [wVramState]
- res 0, a
- ld [wVramState], a
- ld a, $0
- ld [wSpriteUpdatesEnabled], a
- ret
-; 0x2ee4
-
-EnableSpriteUpdates:: ; 2ee4
- ld a, $1
- ld [wSpriteUpdatesEnabled], a
- ld a, [wVramState]
- set 0, a
- ld [wVramState], a
- ld a, $1
- ld [hMapAnims], a
- ret
-; 2ef6
-
+INCLUDE "home/sprite_updates.asm"
INCLUDE "home/string.asm"
-
-IsInJohto:: ; 2f17
-; Return 0 if the player is in Johto, and 1 in Kanto.
-
- ld a, [wMapGroup]
- ld b, a
- ld a, [wMapNumber]
- ld c, a
- call GetWorldMapLocation
-
- cp FAST_SHIP
- jr z, .Johto
-
- cp SPECIAL_MAP
- jr nz, .CheckRegion
-
- ld a, [wBackupMapGroup]
- ld b, a
- ld a, [wBackupMapNumber]
- ld c, a
- call GetWorldMapLocation
-
-.CheckRegion:
- cp KANTO_LANDMARK
- jr nc, .Kanto
-
-.Johto:
- xor a
- ret
-
-.Kanto:
- ld a, 1
- ret
-; 2f3e
+INCLUDE "home/region.asm"
ret_2f3e:: ; 2f3e
ret
@@ -166,88 +111,10 @@ _de_:: ; 2fed
; 2fef
INCLUDE "home/double_speed.asm"
-
-ClearSprites:: ; 300b
-; Erase OAM data
- ld hl, wVirtualOAM
- ld b, wVirtualOAMEnd - wVirtualOAM
- xor a
-.loop
- ld [hli], a
- dec b
- jr nz, .loop
- ret
-; 3016
-
-HideSprites:: ; 3016
-; Set all OAM y-positions to 160 to hide them offscreen
- ld hl, wVirtualOAMSprite00YCoord
- ld de, SPRITEOAMSTRUCT_LENGTH
- ld b, NUM_SPRITE_OAM_STRUCTS
- ld a, SCREEN_WIDTH_PX
-.loop
- ld [hl], a ; y
- add hl, de
- dec b
- jr nz, .loop
- ret
-; 3026
-
+INCLUDE "home/clear_sprites.asm"
INCLUDE "home/copy2.asm"
-
-LoadTileMapToTempTileMap:: ; 309d
-; Load wTileMap into wTempTileMap
- ld a, [rSVBK]
- push af
- ld a, BANK(wTempTileMap)
- ld [rSVBK], a
- hlcoord 0, 0
- decoord 0, 0, wTempTileMap
- ld bc, wTileMapEnd - wTileMap
- call CopyBytes
- pop af
- ld [rSVBK], a
- ret
-; 30b4
-
-Call_LoadTempTileMapToTileMap:: ; 30b4
- xor a
- ld [hBGMapMode], a
- call LoadTempTileMapToTileMap
- ld a, 1
- ld [hBGMapMode], a
- ret
-; 30bf
-
-LoadTempTileMapToTileMap:: ; 30bf
-; Load wTempTileMap into wTileMap
- ld a, [rSVBK]
- push af
- ld a, BANK(wTempTileMap)
- ld [rSVBK], a
- hlcoord 0, 0, wTempTileMap
- decoord 0, 0
- ld bc, wTileMapEnd - wTileMap
- call CopyBytes
- pop af
- ld [rSVBK], a
- ret
-; 30d6
-
-CopyName1:: ; 30d6
-; Copies the name from de to wStringBuffer2
- ld hl, wStringBuffer2
-
-CopyName2:: ; 30d9
-; Copies the name from de to hl
-.loop
- ld a, [de]
- inc de
- ld [hli], a
- cp "@"
- jr nz, .loop
- ret
-; 30e1
+INCLUDE "home/copy_tilemap.asm"
+INCLUDE "home/copy_name.asm"
IsInArray:: ; 30e1
; Find value a for every de bytes in array hl.
@@ -287,132 +154,7 @@ SkipNames:: ; 0x30f4
; 0x30fe
INCLUDE "home/math.asm"
-
-PrintLetterDelay:: ; 313d
-; Wait before printing the next letter.
-
-; The text speed setting in wOptions is actually a frame count:
-; fast: 1 frame
-; mid: 3 frames
-; slow: 5 frames
-
-; wTextBoxFlags[!0] and A or B override text speed with a one-frame delay.
-; wOptions[4] and wTextBoxFlags[!1] disable the delay.
-
- ld a, [wOptions]
- bit NO_TEXT_SCROLL, a
- ret nz
-
-; non-scrolling text?
- ld a, [wTextBoxFlags]
- bit NO_TEXT_DELAY_F, a
- ret z
-
- push hl
- push de
- push bc
-
- ld hl, hOAMUpdate
- ld a, [hl]
- push af
-
-; orginally turned oam update off...
-; ld a, 1
- ld [hl], a
-
-; force fast scroll?
- ld a, [wTextBoxFlags]
- bit FAST_TEXT_DELAY_F, a
- jr z, .fast
-
-; text speed
- ld a, [wOptions]
- and %111
- jr .updatedelay
-
-.fast
- ld a, TEXT_DELAY_FAST
-
-.updatedelay
- ld [wTextDelayFrames], a
-
-.checkjoypad
- call GetJoypad
-
-; input override
- ld a, [wDisableTextAcceleration]
- and a
- jr nz, .wait
-
-; Wait one frame if holding A or B.
- ld a, [hJoyDown]
- bit A_BUTTON_F, a
- jr z, .checkb
- jr .delay
-.checkb
- bit B_BUTTON_F, a
- jr z, .wait
-
-.delay
- call DelayFrame
- jr .end
-
-.wait
- ld a, [wTextDelayFrames]
- and a
- jr nz, .checkjoypad
-
-.end
- pop af
- ld [hOAMUpdate], a
- pop bc
- pop de
- pop hl
- ret
-; 318c
-
-CopyDataUntil:: ; 318c
-; Copy [hl .. bc) to de.
-
-; In other words, the source data is
-; from hl up to but not including bc,
-; and the destination is de.
-
- ld a, [hli]
- ld [de], a
- inc de
- ld a, h
- cp b
- jr nz, CopyDataUntil
- ld a, l
- cp c
- jr nz, CopyDataUntil
- ret
-; 0x3198
-
-PrintNum:: ; 3198
- homecall _PrintNum
- ret
-; 31a4
-
-MobilePrintNum:: ; 31a4
- homecall _MobilePrintNum
- ret
-; 31b0
-
-FarPrintText:: ; 31b0
- ld [hBuffer], a
- ld a, [hROMBank]
- push af
- ld a, [hBuffer]
- rst Bankswitch
-
- call PrintText
-
- pop af
- rst Bankswitch
- ret
-; 31be
+INCLUDE "home/print_text.asm"
CallPointerAt:: ; 31be
ld a, [hROMBank]
@@ -484,235 +226,7 @@ CompareLong:: ; 31e4
ret
; 31f3
-ClearBGPalettes:: ; 31f3
- call ClearPalettes
-WaitBGMap:: ; 31f6
-; Tell VBlank to update BG Map
- ld a, 1 ; BG Map 0 tiles
- ld [hBGMapMode], a
-; Wait for it to do its magic
- ld c, 4
- call DelayFrames
- ret
-; 3200
-
-WaitBGMap2:: ; 0x3200
- ld a, [hCGB]
- and a
- jr z, .bg0
-
- ld a, 2
- ld [hBGMapMode], a
- ld c, 4
- call DelayFrames
-
-.bg0
- ld a, 1
- ld [hBGMapMode], a
- ld c, 4
- call DelayFrames
- ret
-; 0x3218
-
-IsCGB:: ; 3218
- ld a, [hCGB]
- and a
- ret
-; 321c
-
-ApplyTilemap:: ; 321c
- ld a, [hCGB]
- and a
- jr z, .dmg
-
- ld a, [wSpriteUpdatesEnabled]
- cp 0
- jr z, .dmg
-
- ld a, 1
- ld [hBGMapMode], a
- jr CopyTilemapAtOnce
-
-.dmg
-; WaitBGMap
- ld a, 1
- ld [hBGMapMode], a
- ld c, 4
- call DelayFrames
- ret
-; 3238
-
-CGBOnly_CopyTilemapAtOnce:: ; 3238
- ld a, [hCGB]
- and a
- jr z, WaitBGMap
-
-CopyTilemapAtOnce:: ; 323d
- jr .CopyTilemapAtOnce
-; 323f
-
-; unused
- farcall HDMATransferAttrMapAndTileMapToWRAMBank3
- ret
-; 3246
-
-.CopyTilemapAtOnce: ; 3246
- ld a, [hBGMapMode]
- push af
- xor a
- ld [hBGMapMode], a
-
- ld a, [hMapAnims]
- push af
- xor a
- ld [hMapAnims], a
-
-.wait
- ld a, [rLY]
- cp $7f
- jr c, .wait
-
- di
- ld a, BANK(vTiles3)
- ld [rVBK], a
- hlcoord 0, 0, wAttrMap
- call .StackPointerMagic
- ld a, BANK(vTiles0)
- ld [rVBK], a
- hlcoord 0, 0
- call .StackPointerMagic
-
-.wait2
- ld a, [rLY]
- cp $7f
- jr c, .wait2
- ei
-
- pop af
- ld [hMapAnims], a
- pop af
- ld [hBGMapMode], a
- ret
-; 327b
-
-.StackPointerMagic: ; 327b
-; Copy all tiles to vBGMap
- ld [hSPBuffer], sp
- ld sp, hl
- ld a, [hBGMapAddress + 1]
- ld h, a
- ld l, 0
- ld a, SCREEN_HEIGHT
- ld [hTilesPerCycle], a
- ld b, 1 << 1 ; not in v/hblank
- ld c, LOW(rSTAT)
-
-.loop
-rept SCREEN_WIDTH / 2
- pop de
-; if in v/hblank, wait until not in v/hblank
-.loop\@
- ld a, [$ff00+c]
- and b
- jr nz, .loop\@
-; load BGMap0
- ld [hl], e
- inc l
- ld [hl], d
- inc l
-endr
-
- ld de, BG_MAP_WIDTH - SCREEN_WIDTH
- add hl, de
- ld a, [hTilesPerCycle]
- dec a
- ld [hTilesPerCycle], a
- jr nz, .loop
-
- ld a, [hSPBuffer]
- ld l, a
- ld a, [hSPBuffer + 1]
- ld h, a
- ld sp, hl
- ret
-; 32f9
-
-SetPalettes:: ; 32f9
-; Inits the Palettes
-; depending on the system the monochromes palettes or color palettes
- ld a, [hCGB]
- and a
- jr nz, .SetPalettesForGameBoyColor
- ld a, %11100100
- ld [rBGP], a
- ld a, %11010000
- ld [rOBP0], a
- ld [rOBP1], a
- ret
-
-.SetPalettesForGameBoyColor:
- push de
- ld a, %11100100
- call DmgToCgbBGPals
- lb de, %11100100, %11100100
- call DmgToCgbObjPals
- pop de
- ret
-; 3317
-
-ClearPalettes:: ; 3317
-; Make all palettes white
-
-; CGB: make all the palette colors white
- ld a, [hCGB]
- and a
- jr nz, .cgb
-
-; DMG: just change palettes to 0 (white)
- xor a
- ld [rBGP], a
- ld [rOBP0], a
- ld [rOBP1], a
- ret
-
-.cgb
- ld a, [rSVBK]
- push af
-
- ld a, BANK(wBGPals2)
- ld [rSVBK], a
-
-; Fill wBGPals2 and wOBPals2 with $ffff (white)
- ld hl, wBGPals2
- ld bc, 16 palettes
- ld a, $ff
- call ByteFill
-
- pop af
- ld [rSVBK], a
-
-; Request palette update
- ld a, 1
- ld [hCGBPalUpdate], a
- ret
-; 333e
-
-GetMemSGBLayout:: ; 333e
- ld b, SCGB_RAM
-GetSGBLayout:: ; 3340
-; load sgb packets unless dmg
-
- ld a, [hCGB]
- and a
- jr nz, .sgb
-
- ld a, [hSGB]
- and a
- ret z
-
-.sgb
- predef_jump LoadSGBLayout
-; 334e
+INCLUDE "home/tilemap.asm"
SetHPPal:: ; 334e
; Set palette for hp bar pixel length e at hl.
@@ -769,634 +283,17 @@ GetWeekday:: ; 3376
; 3380
INCLUDE "home/pokedex_flags.asm"
-
INCLUDE "home/names.asm"
-
-ScrollingMenu:: ; 350c
- call CopyMenuData
- ld a, [hROMBank]
- push af
-
- ld a, BANK(_ScrollingMenu)
- rst Bankswitch
-
- call _InitScrollingMenu
- call .UpdatePalettes
- call _ScrollingMenu
-
- pop af
- rst Bankswitch
-
- ld a, [wMenuJoypad]
- ret
-; 3524
-
-.UpdatePalettes: ; 3524
- ld hl, wVramState
- bit 0, [hl]
- jp nz, UpdateTimePals
- jp SetPalettes
-; 352f
-
-InitScrollingMenu:: ; 352f
- 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
-; 354b
-
-JoyTextDelay_ForcehJoyDown:: ; 354b joypad
- call DelayFrame
-
- ld a, [hInMenu]
- push af
- ld a, $1
- ld [hInMenu], a
- call JoyTextDelay
- pop af
- ld [hInMenu], a
-
- ld a, [hJoyLast]
- and D_RIGHT + D_LEFT + D_UP + D_DOWN
- ld c, a
- ld a, [hJoyPressed]
- and A_BUTTON + B_BUTTON + SELECT + START
- or c
- ld c, a
- ret
-; 3567
-
-HandleStoneQueue:: ; 3567
- ld a, [hROMBank]
- push af
-
- call SwitchToMapScriptsBank
- call .WarpAction
-
- pop bc
- ld a, b
- rst Bankswitch
- ret
-; 3574
-
-.WarpAction: ; 3574
- ld hl, OBJECT_MAP_OBJECT_INDEX
- add hl, de
- ld a, [hl]
- cp $ff
- jr z, .nope
-
- ld l, a
- push hl
- call .IsObjectOnWarp
- pop hl
- jr nc, .nope
- ld d, a
- ld e, l
- call .IsObjectInStoneTable
- jr nc, .nope
- call CallMapScript
- farcall EnableScriptMode
- scf
- ret
-
-.nope
- and a
- ret
-; 3599
-
-.IsObjectOnWarp: ; 3599
- push de
-
- ld hl, OBJECT_NEXT_MAP_X
- add hl, de
- ld a, [hl]
- ld hl, OBJECT_NEXT_MAP_Y
- add hl, de
- ld e, [hl]
-
- sub 4
- ld d, a
- ld a, e
- sub 4
- ld e, a
- call .check_on_warp
-
- pop de
- ret
-; 35b0
-
-.check_on_warp ; 35b0
- ld hl, wCurrMapWarpsPointer
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wCurrMapWarpCount]
- and a
- jr z, .nope2
-
-.loop
- push af
- ld a, [hl]
- cp e
- jr nz, .not_on_warp
- inc hl
- ld a, [hld]
- cp d
- jr nz, .not_on_warp
- jr .found_warp
-
-.not_on_warp
- ld a, 5
- add l
- ld l, a
- jr nc, .no_carry
- inc h
-.no_carry
-
- pop af
- dec a
- jr nz, .loop
-
-.nope2
- and a
- ret
-
-.found_warp
- pop af
- ld d, a
- ld a, [wCurrMapWarpCount]
- sub d
- inc a
- scf
- ret
-; 35de
-
-.IsObjectInStoneTable: ; 35de
- inc e
- ld hl, CMDQUEUE_ADDR
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
-.loop2
- ld a, [hli]
- cp $ff
- jr z, .nope3
- cp d
- jr nz, .next_inc3
- ld a, [hli]
- cp e
- jr nz, .next_inc2
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jr .yes
-
-.next_inc3
- inc hl
-
-.next_inc2
- inc hl
- inc hl
- jr .loop2
-
-.nope3
- and a
- ret
-
-.yes
- scf
- ret
-; 3600
-
+INCLUDE "home/scrolling_menu.asm"
+INCLUDE "home/stone_queue.asm"
INCLUDE "home/trainers.asm"
-
-IsAPokemon:: ; 3741
-; Return carry if species a is not a Pokemon.
- and a
- jr z, .NotAPokemon
- cp EGG
- jr z, .Pokemon
- cp NUM_POKEMON + 1
- jr c, .Pokemon
-
-.NotAPokemon:
- scf
- ret
-
-.Pokemon:
- and a
- ret
-; 3750
-
-DrawBattleHPBar:: ; 3750
-; Draw an HP bar d tiles long at hl
-; Fill it up to e pixels
-
- push hl
- push de
- push bc
-
-; Place 'HP:'
- ld a, $60
- ld [hli], a
- ld a, $61
- ld [hli], a
-
-; Draw a template
- push hl
- ld a, $62 ; empty bar
-.template
- ld [hli], a
- dec d
- jr nz, .template
- ld a, $6b ; bar end
- add b
- ld [hl], a
- pop hl
-
-; Safety check # pixels
- ld a, e
- and a
- jr nz, .fill
- ld a, c
- and a
- jr z, .done
- ld e, 1
-
-.fill
-; Keep drawing tiles until pixel length is reached
- ld a, e
- sub TILE_WIDTH
- jr c, .lastbar
-
- ld e, a
- ld a, $6a ; full bar
- ld [hli], a
- ld a, e
- and a
- jr z, .done
- jr .fill
-
-.lastbar
- ld a, $62 ; empty bar
- add e ; + e
- ld [hl], a
-
-.done
- pop bc
- pop de
- pop hl
- ret
-; 3786
-
-PrepMonFrontpic:: ; 3786
- ld a, $1
- ld [wBoxAlignment], a
-
-_PrepMonFrontpic:: ; 378b
- ld a, [wCurPartySpecies]
- call IsAPokemon
- jr c, .not_pokemon
-
- push hl
- ld de, vTiles2
- predef GetMonFrontpic
- pop hl
- xor a
- ld [hGraphicStartTile], a
- lb bc, 7, 7
- predef PlaceGraphic
- xor a
- ld [wBoxAlignment], a
- ret
-
-.not_pokemon
- xor a
- ld [wBoxAlignment], a
- inc a
- ld [wCurPartySpecies], a
- ret
-; 37b6
-
+INCLUDE "home/mon_stats.asm"
INCLUDE "home/cry.asm"
-
-PrintLevel:: ; 382d
-; Print wTempMonLevel at hl
-
- ld a, [wTempMonLevel]
- ld [hl], "<LV>"
- inc hl
-
-; How many digits?
- ld c, 2
- cp 100 ; This is distinct from MAX_LEVEL.
- jr c, Print8BitNumRightAlign
-
-; 3-digit numbers overwrite the :L.
- dec hl
- inc c
- jr Print8BitNumRightAlign
-; 383d
-
-PrintLevel_Force3Digits:: ; 383d
-; Print :L and all 3 digits
- ld [hl], "<LV>"
- inc hl
- ld c, 3
-; 3842
-
-Print8BitNumRightAlign:: ; 3842
- ld [wd265], a
- ld de, wd265
- ld b, PRINTNUM_RIGHTALIGN | 1
- jp PrintNum
-; 384d
-
-Unreferenced_Function384d:: ; 384d
-; GetNthMove
- ld hl, wListMoves_MoveIndicesBuffer
- ld c, a
- ld b, 0
- add hl, bc
- ld a, [hl]
- ret
-; 3856
-
-GetBaseData:: ; 3856
- push bc
- push de
- push hl
- ld a, [hROMBank]
- push af
- ld a, BANK(BaseData)
- rst Bankswitch
-
-; Egg doesn't have BaseData
- ld a, [wCurSpecies]
- cp EGG
- jr z, .egg
-
-; Get BaseData
- dec a
- ld bc, BASE_DATA_SIZE
- ld hl, BaseData
- call AddNTimes
- ld de, wCurBaseData
- ld bc, BASE_DATA_SIZE
- call CopyBytes
- jr .end
-
-.egg
-; ????
- ld de, UnknownEggPic
-
-; Sprite dimensions
- ld b, $55 ; 5x5
- ld hl, wBasePicSize
- ld [hl], b
-
-; ????
- ld hl, wBasePadding
- ld [hl], e
- inc hl
- ld [hl], d
- inc hl
- ld [hl], e
- inc hl
- ld [hl], d
- jr .end
-
-.end
-; Replace Pokedex # with species
- ld a, [wCurSpecies]
- ld [wBaseDexNo], a
-
- pop af
- rst Bankswitch
- pop hl
- pop de
- pop bc
- ret
-; 389c
-
-GetCurNick:: ; 389c
- ld a, [wCurPartyMon]
- ld hl, wPartyMonNicknames
-
-GetNick:: ; 38a2
-; Get nickname a from list hl.
-
- push hl
- push bc
-
- call SkipNames
- ld de, wStringBuffer1
-
- push de
- ld bc, MON_NAME_LENGTH
- call CopyBytes
- pop de
-
- callfar CorrectNickErrors
-
- pop bc
- pop hl
- ret
-; 38bb
-
-PrintBCDNumber:: ; 38bb
-; function to print a BCD (Binary-coded decimal) number
-; de = address of BCD number
-; hl = destination address
-; c = flags and length
-; bit 7: if set, do not print leading zeroes
-; if unset, print leading zeroes
-; bit 6: if set, left-align the string (do not pad empty digits with spaces)
-; if unset, right-align the string
-; bit 5: if set, print currency symbol at the beginning of the string
-; if unset, do not print the currency symbol
-; bits 0-4: length of BCD number in bytes
-; Note that bits 5 and 7 are modified during execution. The above reflects
-; their meaning at the beginning of the functions's execution.
- ld b, c ; save flags in b
- res 7, c
- res 6, c
- res 5, c ; c now holds the length
- bit 5, b
- jr z, .loop
- bit 7, b
- jr nz, .loop ; skip currency symbol
- ld [hl], "¥"
- inc hl
-.loop
- ld a, [de]
- swap a
- call PrintBCDDigit ; print upper digit
- ld a, [de]
- call PrintBCDDigit ; print lower digit
- inc de
- dec c
- jr nz, .loop
- bit 7, b ; were any non-zero digits printed?
- jr z, .done ; if so, we are done
-.numberEqualsZero ; if every digit of the BCD number is zero
- bit 6, b ; left or right alignment?
- jr nz, .skipRightAlignmentAdjustment
- dec hl ; if the string is right-aligned, it needs to be moved back one space
-.skipRightAlignmentAdjustment
- bit 5, b
- jr z, .skipCurrencySymbol
- ld [hl], "¥" ; currency symbol
- inc hl
-.skipCurrencySymbol
- ld [hl], "0"
- call PrintLetterDelay
- inc hl
-.done
- ret
-; 0x38f2
-
-PrintBCDDigit:: ; 38f2
- and %00001111
- and a
- jr z, .zeroDigit
-.nonzeroDigit
- bit 7, b ; have any non-space characters been printed?
- jr z, .outputDigit
-; if bit 7 is set, then no numbers have been printed yet
- bit 5, b ; print the currency symbol?
- jr z, .skipCurrencySymbol
- ld [hl], "¥"
- inc hl
- res 5, b
-.skipCurrencySymbol
- res 7, b ; unset 7 to indicate that a nonzero digit has been reached
-.outputDigit
- add "0"
- ld [hli], a
- jp PrintLetterDelay
-
-.zeroDigit
- bit 7, b ; either printing leading zeroes or already reached a nonzero digit?
- jr z, .outputDigit ; if so, print a zero digit
- bit 6, b ; left or right alignment?
- ret nz
- ld a, " "
- ld [hli], a ; if right-aligned, "print" a space by advancing the pointer
- ret
-; 0x3917
-
-GetPartyParamLocation:: ; 3917
-; Get the location of parameter a from wCurPartyMon in hl
- push bc
- ld hl, wPartyMons
- ld c, a
- ld b, 0
- add hl, bc
- ld a, [wCurPartyMon]
- call GetPartyLocation
- pop bc
- ret
-; 3927
-
-GetPartyLocation:: ; 3927
-; Add the length of a PartyMon struct to hl a times.
- ld bc, PARTYMON_STRUCT_LENGTH
- jp AddNTimes
-; 392d
-
-Unreferenced_Function392d:: ; 392d
-; GetDexNumber
-; Probably used in gen 1 to convert index number to dex number
-; Not required in gen 2 because index number == dex number
- push hl
- ld a, b
- dec a
- ld b, 0
- add hl, bc
- ld hl, BaseData + BASE_DEX_NO
- ld bc, BASE_DATA_SIZE
- call AddNTimes
- ld a, BANK(BaseData)
- call GetFarHalfword
- ld b, l
- ld c, h
- pop hl
- ret
-; 3945
-
+INCLUDE "home/print_level.asm"
+INCLUDE "home/mon_data.asm"
+INCLUDE "home/print_bcd.asm"
+INCLUDE "home/mon_data_2.asm"
INCLUDE "home/battle.asm"
-
-PushLYOverrides:: ; 3b0c
-
- ld a, [hLCDCPointer]
- and a
- ret z
-
- ld a, LOW(wLYOverridesBackup)
- ld [wRequested2bppSource], a
- ld a, HIGH(wLYOverridesBackup)
- ld [wRequested2bppSource + 1], a
-
- ld a, LOW(wLYOverrides)
- ld [wRequested2bppDest], a
- ld a, HIGH(wLYOverrides)
- ld [wRequested2bppDest + 1], a
-
- ld a, (wLYOverridesEnd - wLYOverrides) / 16
- ld [wRequested2bpp], a
- ret
-; 3b2a
-
-_InitSpriteAnimStruct:: ; 3b2a
-
- ld [wSpriteAnimIDBuffer], a
- ld a, [hROMBank]
- push af
-
- ld a, BANK(InitSpriteAnimStruct)
- rst Bankswitch
- ld a, [wSpriteAnimIDBuffer]
-
- call InitSpriteAnimStruct
-
- pop af
- rst Bankswitch
-
- ret
-; 3b3c
-
-ReinitSpriteAnimFrame:: ; 3b3c
-
- ld [wSpriteAnimIDBuffer], a
- ld a, [hROMBank]
- push af
-
- ld a, BANK(_ReinitSpriteAnimFrame)
- rst Bankswitch
- ld a, [wSpriteAnimIDBuffer]
-
- call _ReinitSpriteAnimFrame
-
- pop af
- rst Bankswitch
-
- ret
-; 3b4e
-
+INCLUDE "home/sprite_anims.asm"
INCLUDE "home/audio.asm"
INCLUDE "home/mobile.asm"