summaryrefslogtreecommitdiff
path: root/home.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home.asm')
-rw-r--r--home.asm570
1 files changed, 10 insertions, 560 deletions
diff --git a/home.asm b/home.asm
index 670f63f95..dc03faa2c 100644
--- a/home.asm
+++ b/home.asm
@@ -1,17 +1,23 @@
INCLUDE "includes.asm"
+
SECTION "NULL", ROM0
NULL::
+
INCLUDE "rst.asm"
+
+
INCLUDE "interrupts.asm"
+
SECTION "Header", ROM0
Start::
nop
jp _Start
+
SECTION "Home", ROM0
INCLUDE "home/init.asm"
@@ -40,9 +46,9 @@ INCLUDE "home/map.asm"
InexplicablyEmptyFunction:: ; 2d43
; Inexplicably empty.
; Seen in PredefPointers.
- rept 16
+rept 16
nop
- endr
+endr
ret
; 2d54
@@ -765,300 +771,7 @@ GetWeekday:: ; 3376
INCLUDE "home/pokedex_flags.asm"
-NamesPointers:: ; 33ab
- dba PokemonNames
- dba MoveNames
- dbw 0, 0
- dba ItemNames
- dbw 0, PartyMonOT
- dbw 0, OTPartyMonOT
- dba TrainerClassNames
- dbw $4, $4b52 ; within PackMenuGFX
-; 33c3
-
-GetName:: ; 33c3
-; Return name CurSpecies from name list wNamedObjectTypeBuffer in StringBuffer1.
-
- ld a, [hROMBank]
- push af
- push hl
- push bc
- push de
-
- ld a, [wNamedObjectTypeBuffer]
- cp PKMN_NAME
- jr nz, .NotPokeName
-
- ld a, [CurSpecies]
- ld [wd265], a
- call GetPokemonName
- ld hl, PKMN_NAME_LENGTH
- add hl, de
- ld e, l
- ld d, h
- jr .done
-
-.NotPokeName:
- ld a, [wNamedObjectTypeBuffer]
- 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, [CurSpecies]
- dec a
- call GetNthString
-
- ld de, StringBuffer1
- ld bc, ITEM_NAME_LENGTH
- call CopyBytes
-
-.done
- ld a, e
- ld [wUnusedD102], a
- ld a, d
- ld [wUnusedD102 + 1], a
-
- pop de
- pop bc
- pop hl
- pop af
- rst Bankswitch
- ret
-; 3411
-
-GetNthString:: ; 3411
-; Return the address of the
-; ath string starting from hl.
-
- and a
- ret z
-
- push bc
- ld b, a
- ld c, "@"
-.readChar
- ld a, [hli]
- cp c
- jr nz, .readChar
- dec b
- jr nz, .readChar
- pop bc
- ret
-; 3420
-
-GetBasePokemonName:: ; 3420
-; Discards gender (Nidoran).
-
- push hl
- call GetPokemonName
-
- ld hl, StringBuffer1
-.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
-
-; 343b
-
-GetPokemonName:: ; 343b
-; Get Pokemon name wd265.
-
- ld a, [hROMBank]
- push af
- push hl
- ld a, BANK(PokemonNames)
- rst Bankswitch
-
-; Each name is ten characters
- ld a, [wd265]
- dec a
- ld d, 0
- ld e, a
- ld h, 0
- ld l, a
- add hl, hl ; hl = hl * 4
- add hl, hl ; hl = hl * 4
- add hl, de ; hl = (hl*4) + de
- add hl, hl ; hl = (5*hl) + (5*hl)
- ld de, PokemonNames
- add hl, de
-
-; Terminator
- ld de, StringBuffer1
- push de
- ld bc, PKMN_NAME_LENGTH - 1
- call CopyBytes
- ld hl, StringBuffer1 + PKMN_NAME_LENGTH - 1
- ld [hl], "@"
- pop de
-
- pop hl
- pop af
- rst Bankswitch
- ret
-; 3468
-
-GetItemName:: ; 3468
-; Get item name wd265.
-
- push hl
- push bc
- ld a, [wd265]
-
- cp TM01
- jr nc, .TM
-
- ld [CurSpecies], a
- ld a, ITEM_NAME
- ld [wNamedObjectTypeBuffer], a
- call GetName
- jr .Copied
-.TM:
- call GetTMHMName
-.Copied:
- ld de, StringBuffer1
- pop bc
- pop hl
- ret
-; 3487
-
-GetTMHMName:: ; 3487
-; Get TM/HM name by item id wd265.
-
- push hl
- push de
- push bc
- ld a, [wd265]
- push af
-
-; TM/HM prefix
- cp HM01
- push af
- jr c, .TM
-
- ld hl, .HMText
- ld bc, .HMTextEnd - .HMText
- jr .asm_34a1
-
-.TM:
- ld hl, .TMText
- ld bc, .TMTextEnd - .TMText
-
-.asm_34a1
- ld de, StringBuffer1
- call CopyBytes
-
-; TM/HM number
- push de
- ld a, [wd265]
- ld c, a
- callab GetTMHMNumber
- pop de
-
-; HM numbers start from 51, not 1
- pop af
- ld a, c
- jr c, .asm_34b9
- sub NUM_TMS
-.asm_34b9
-
-; Divide and mod by 10 to get the top and bottom digits respectively
- ld b, "0"
-.mod10
- sub 10
- jr c, .asm_34c2
- inc b
- jr .mod10
-.asm_34c2
- add 10
-
- push af
- ld a, b
- ld [de], a
- inc de
- pop af
-
- ld b, "0"
- add b
- ld [de], a
-
-; End the string
- inc de
- ld a, "@"
- ld [de], a
-
- pop af
- ld [wd265], a
- pop bc
- pop de
- pop hl
- ret
-
-.TMText:
- db "TM"
-.TMTextEnd:
- db "@"
-
-.HMText:
- db "HM"
-.HMTextEnd:
- db "@"
-; 34df
-
-IsHM:: ; 34df
- cp HM01
- jr c, .NotHM
- scf
- ret
-.NotHM:
- and a
- ret
-; 34e7
-
-IsHMMove:: ; 34e7
- ld hl, HMMoves
- ld de, 1
- jp IsInArray
-
-
-INCLUDE "data/hm_moves.asm"
-
-
-GetMoveName:: ; 34f8
- push hl
-
- ld a, MOVE_NAME
- ld [wNamedObjectTypeBuffer], a
-
- ld a, [wNamedObjectIndexBuffer] ; move id
- ld [CurSpecies], a
-
- call GetName
- ld de, StringBuffer1
-
- pop hl
- ret
-; 350c
+INCLUDE "home/names.asm"
ScrollingMenu:: ; 350c
call CopyMenuData2
@@ -1270,270 +983,7 @@ HandleStoneQueue:: ; 3567
ret
; 3600
-CheckTrainerBattle2:: ; 3600
-
- ld a, [hROMBank]
- push af
-
- call SwitchToMapScriptHeaderBank
- call CheckTrainerBattle
-
- pop bc
- ld a, b
- rst Bankswitch
- ret
-; 360d
-
-CheckTrainerBattle:: ; 360d
-; Check if any trainer on the map sees the player and wants to battle.
-
-; Skip the player object.
- ld a, 1
- ld de, MapObjects + OBJECT_LENGTH
-
-.loop
-
-; Start a battle if the object:
-
- push af
- push de
-
-; Has a sprite
- ld hl, MAPOBJECT_SPRITE
- add hl, de
- ld a, [hl]
- and a
- jr z, .next
-
-; Is a trainer
- ld hl, MAPOBJECT_COLOR
- add hl, de
- ld a, [hl]
- and $f
- cp $2
- jr nz, .next
-
-; Is visible on the map
- ld hl, MAPOBJECT_OBJECT_STRUCT_ID
- add hl, de
- ld a, [hl]
- cp -1
- jr z, .next
-
-; Is facing the player...
- call GetObjectStruct
- call FacingPlayerDistance_bc
- jr nc, .next
-
-; ...within their sight range
- ld hl, MAPOBJECT_RANGE
- add hl, de
- ld a, [hl]
- cp b
- jr c, .next
-
-; And hasn't already been beaten
- push bc
- push de
- ld hl, MAPOBJECT_SCRIPT_POINTER
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld b, CHECK_FLAG
- call EventFlagAction
- ld a, c
- pop de
- pop bc
- and a
- jr z, .startbattle
-
-.next
- pop de
- ld hl, OBJECT_LENGTH
- add hl, de
- ld d, h
- ld e, l
-
- pop af
- inc a
- cp NUM_OBJECTS
- jr nz, .loop
- xor a
- ret
-
-.startbattle
- pop de
- pop af
- ld [hLastTalked], a
- ld a, b
- ld [EngineBuffer2], a
- ld a, c
- ld [EngineBuffer3], a
- jr LoadTrainer_continue
-; 3674
-
-TalkToTrainer:: ; 3674
- ld a, 1
- ld [EngineBuffer2], a
- ld a, -1
- ld [EngineBuffer3], a
-
-LoadTrainer_continue:: ; 367e
- call GetMapScriptHeaderBank
- ld [EngineBuffer1], a
-
- ld a, [hLastTalked]
- call GetMapObject
-
- ld hl, MAPOBJECT_SCRIPT_POINTER
- add hl, bc
- ld a, [EngineBuffer1]
- call GetFarHalfword
- ld de, wTempTrainerHeader
- ld bc, wTempTrainerHeaderEnd - wTempTrainerHeader
- ld a, [EngineBuffer1]
- call FarCopyBytes
- xor a
- ld [wRunningTrainerBattleScript], a
- scf
- ret
-; 36a5
-
-FacingPlayerDistance_bc:: ; 36a5
-
- push de
- call FacingPlayerDistance
- ld b, d
- ld c, e
- pop de
- ret
-; 36ad
-
-FacingPlayerDistance:: ; 36ad
-; Return carry if the sprite at bc is facing the player,
-; and its distance in d.
-
- ld hl, OBJECT_NEXT_MAP_X ; x
- add hl, bc
- ld d, [hl]
-
- ld hl, OBJECT_NEXT_MAP_Y ; y
- add hl, bc
- ld e, [hl]
-
- ld a, [PlayerStandingMapX]
- cp d
- jr z, .CheckY
-
- ld a, [PlayerStandingMapY]
- cp e
- jr z, .CheckX
-
- and a
- ret
-
-.CheckY:
- ld a, [PlayerStandingMapY]
- sub e
- jr z, .NotFacing
- jr nc, .Above
-
-; Below
- cpl
- inc a
- ld d, a
- ld e, OW_UP
- jr .CheckFacing
-
-.Above:
- ld d, a
- ld e, OW_DOWN
- jr .CheckFacing
-
-.CheckX:
- ld a, [PlayerStandingMapX]
- sub d
- jr z, .NotFacing
- jr nc, .Left
-
-; Right
- cpl
- inc a
- ld d, a
- ld e, OW_LEFT
- jr .CheckFacing
-
-.Left:
- ld d, a
- ld e, OW_RIGHT
-
-.CheckFacing:
- call GetSpriteDirection
- cp e
- jr nz, .NotFacing
- scf
- ret
-
-.NotFacing:
- and a
- ret
-; 36f5
-
-CheckTrainerFlag:: ; 36f5
- push bc
- ld hl, OBJECT_MAP_OBJECT_INDEX
- add hl, bc
- ld a, [hl]
- call GetMapObject
- ld hl, MAPOBJECT_SCRIPT_POINTER
- 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, CHECK_FLAG
- call EventFlagAction
- pop de
- ld a, c
- and a
- pop bc
- ret
-; 3718
-
-PrintWinLossText:: ; 3718
- ld a, [BattleType]
- cp BATTLETYPE_CANLOSE
- jr .canlose ; ??????????
-
-; unreferenced
- ld hl, wWinTextPointer
- jr .ok
-
-.canlose
- ld a, [wBattleResult]
- ld hl, wWinTextPointer
- and $f
- jr z, .ok
- ld hl, wLossTextPointer
-
-.ok
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call GetMapScriptHeaderBank
- call FarPrintText
- call WaitBGMap
- call WaitPressAorB_BlinkCursor
- ret
-; 3741
+INCLUDE "home/trainers.asm"
IsAPokemon:: ; 3741
; Return carry if species a is not a Pokemon.