summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluckytyphlosion <alan.rj.huang@gmail.com>2015-05-24 15:04:26 -0400
committerluckytyphlosion <alan.rj.huang@gmail.com>2015-05-24 15:04:26 -0400
commitb7e34ecc401032ee14d998fd545a302d6b430010 (patch)
treeaf8b24bcedaa02e08064707e6940cb335ca1d51c
parentcd170d676e2180cdd75446a4fa575be8fa584749 (diff)
More home.asm documentation.
-rw-r--r--home.asm207
1 files changed, 144 insertions, 63 deletions
diff --git a/home.asm b/home.asm
index 1a9d3175..c00ac8e0 100644
--- a/home.asm
+++ b/home.asm
@@ -399,45 +399,8 @@ Func_11a5:: ; 11a5 (0:11a5)
add b
add c
ret
-
-PlayCry:: ; 13d0 (0:13d0)
-; Play monster a's cry.
- call GetCryData
- call PlaySound
- jp WaitForSoundToFinish
-
-GetCryData:: ; 13d9 (0:13d9)
-; Load cry data for monster a.
- dec a
- ld c, a
- ld b, 0
- ld hl, CryData
- add hl, bc
- add hl, bc
- add hl, bc
-
- ld a, Bank(CryData)
- call BankswitchHome
- ld a, [hli]
- ld b, a ; cry id
- ld a, [hli]
- ld [wc0f1], a
- ld a, [hl]
- ld [wc0f2], a
- call BankswitchBack
-
- ; Cry headers have 3 channels,
- ; and start from index $14,
- ; so add 3 times the cry id.
- ld a, b
- ld c, $14
- rlca ; * 2
- add b
- add c
- ret
-
-DisplayPartyMenu:: ; 13fc (0:13fc)
+DisplayPartyMenu:: ; 11c8 (0:11c8)
ld a,[hTilesetType]
push af
xor a
@@ -447,8 +410,8 @@ DisplayPartyMenu:: ; 13fc (0:13fc)
call PartyMenuInit
call DrawPartyMenu
jp HandlePartyMenuInput
-
-GoBackToPartyMenu:: ; 1411 (0:1411)
+
+GoBackToPartyMenu:: ; 11dd (0:11dd)
ld a,[hTilesetType]
push af
xor a
@@ -457,7 +420,7 @@ GoBackToPartyMenu:: ; 1411 (0:1411)
call RedrawPartyMenu
jp HandlePartyMenuInput
-PartyMenuInit:: ; 1420 (0:1420)
+PartyMenuInit:: ; 11ec (0:11ec)
ld a, 1 ; hardcoded bank
call BankswitchHome
call LoadHpBarAndStatusTilePatterns
@@ -496,24 +459,35 @@ PartyMenuInit:: ; 1420 (0:1420)
ld [hl], a ; old menu item ID
ret
-HandlePartyMenuInput:: ; 145a (0:145a)
+HandlePartyMenuInput:: ; 1226 (0:1226)
ld a,1
ld [wMenuWrappingEnabled],a
ld a,$40
ld [wd09b],a
call HandleMenuInputPokemonSelection
- call PlaceUnfilledArrowMenuCursor
- ld b,a
- xor a
+ push af ; save hJoy5 OR wMenuWrapping enabled, if no inputs were selected within a certain period of time
+ bit 1,a ; was B button pressed?
+ ld a,$0
ld [wd09b],a
ld a,[wCurrentMenuItem]
ld [wcc2b],a
+ jr nz,.asm_1258
+ ld a,[wCurrentMenuItem]
+ ld [wWhichPokemon],a
+ callab Func_fce18 ; 3f:4e18
+ jr nc,.asm_1258
+ call Func_154a
+ jr nz,.asm_128f
+.asm_1258
+ pop af
+ call PlaceUnfilledArrowMenuCursor
+ ld b,a
ld hl,wd730
res 6,[hl] ; turn on letter printing delay
ld a,[wMenuItemToSwap]
and a
jp nz,.swappingPokemon
- pop af
+ pop af ; double pop af?
ld [hTilesetType],a
bit 1,b
jr nz,.noPokemonChosen
@@ -532,6 +506,14 @@ HandlePartyMenuInput:: ; 145a (0:145a)
call BankswitchBack
and a
ret
+.asm_128f
+ pop af
+ ld hl,PartyMenuText_12cc
+ call PrintText
+ xor a
+ ld [wMenuItemToSwap],a
+ pop af
+ ld [hTilesetType],a
.noPokemonChosen
call BankswitchBack
scf
@@ -540,28 +522,68 @@ HandlePartyMenuInput:: ; 145a (0:145a)
bit 1,b ; was the B button pressed?
jr z,.handleSwap ; if not, handle swapping the pokemon
.cancelSwap ; if the B button was pressed
- callba ErasePartyMenuCursors
+ callba ErasePartyMenuCursors ; 4:5e98
xor a
ld [wMenuItemToSwap],a
ld [wd07d],a
call RedrawPartyMenu
- jr HandlePartyMenuInput
+ jp HandlePartyMenuInput
.handleSwap
ld a,[wCurrentMenuItem]
ld [wWhichPokemon],a
- callba SwitchPartyMon
- jr HandlePartyMenuInput
+ callba SwitchPartyMon ; 4:61c5
+ jp HandlePartyMenuInput
+PartyMenuText_12cc:: ; 12cc (0:12cc)
+ TX_FAR _PartyMenuText_12cc ; 28:411b
+ db "@"
+
DrawPartyMenu:: ; 14d4 (0:14d4)
- ld hl, DrawPartyMenu_
+ ld hl, DrawPartyMenu_ ; 4:5875
jr DrawPartyMenuCommon
RedrawPartyMenu:: ; 14d9 (0:14d9)
- ld hl, RedrawPartyMenu_
+ ld hl, RedrawPartyMenu_ ; 4:5886
DrawPartyMenuCommon:: ; 14dc (0:14dc)
ld b, BANK(RedrawPartyMenu_)
jp Bankswitch
+
+PlayCry:: ; 13d0 (0:13d0)
+; Play monster a's cry.
+ call GetCryData
+ call PlaySound
+ jp WaitForSoundToFinish
+
+GetCryData:: ; 13d9 (0:13d9)
+; Load cry data for monster a.
+ dec a
+ ld c, a
+ ld b, 0
+ ld hl, CryData
+ add hl, bc
+ add hl, bc
+ add hl, bc
+
+ ld a, Bank(CryData)
+ call BankswitchHome
+ ld a, [hli]
+ ld b, a ; cry id
+ ld a, [hli]
+ ld [wc0f1], a
+ ld a, [hl]
+ ld [wc0f2], a
+ call BankswitchBack
+
+ ; Cry headers have 3 channels,
+ ; and start from index $14,
+ ; so add 3 times the cry id.
+ ld a, b
+ ld c, $14
+ rlca ; * 2
+ add b
+ add c
+ ret
; prints a pokemon's status condition
; INPUT:
@@ -1000,6 +1022,67 @@ InterlaceMergeSpriteBuffers:: ; 16ea (0:16ea)
ld b, a
jp CopyVideoData
+Func_1510:: ; 1510 (0:1510)
+ push hl
+ ld hl,wd430
+ set 7,[hl]
+ ld hl,wSpriteStateData1 + $f2 ; pikachu data?
+ ld [hl],$ff
+ pop hl
+ ret
+
+Func_151d:: ; 151d (0:151d)
+ push hl
+ ld hl,wd430
+ res 7,[hl]
+ pop hl
+ ret
+
+Func_1525:: ; 1525 (0:1525)
+ push hl
+ ld hl,wd430
+ res 3,[hl]
+ pop hl
+ ret
+
+Func_152d:: ; 152d (0:152d)
+ push hl
+ ld hl,wd430
+ set 3,[hl]
+ ld hl,wSpriteStateData1 + $f2 ; pikachu data?
+ ld [hl],$ff
+ pop hl
+ ret
+
+Func_153a:: ; 153a (0:153a)
+ push hl
+ ld hl,wd430
+ set 1,[hl]
+ pop hl
+ ret
+
+Func_1542:: ; 1542 (0:1542)
+ push hl
+ ld hl,wd430
+ res 1,[hl]
+ pop hl
+ ret
+
+Func_154a:: ; 154a (0:154a)
+ push hl
+ ld hl,wd430
+ bit 1,[hl]
+ pop hl
+ ret
+
+Func_1552:: ; 1552 (0:1552)
+ ld a,[hl]
+ dec a
+ swap a
+ ld [$ff93],a
+ homecall Func_fc6d5 ; 3f:46d5
+ ret
+
INCLUDE "data/collision.asm"
@@ -4040,6 +4123,8 @@ HandleMenuInputPokemonSelection:: ; 3ac2 (0:3ac2)
ld [wcc4b],a
ld a,[hJoy5]
ld b,a
+ bit 0,a ; pressed A key?
+ jr z,.checkOtherKeys
bit 6,a ; pressed Up key?
jr z,.checkIfDownPressed
.upPressed
@@ -4106,7 +4191,7 @@ HandleMenuInputPokemonSelection:: ; 3ac2 (0:3ac2)
jr z,.checkOtherKeys
jr .checkIfAButtonOrBButtonPressed
-PlaceMenuCursor:: ; 3b7c (0:3b7c)
+PlaceMenuCursor:: ; 3b6d (0:3b6d)
ld a,[wTopMenuItemY]
and a ; is the y coordinate 0?
jr z,.adjustForXCoord
@@ -4125,15 +4210,13 @@ PlaceMenuCursor:: ; 3b7c (0:3b7c)
ld a,[wLastMenuItem]
and a ; was the previous menu id 0?
jr z,.checkForArrow1
+ ld bc,40
push af
- ld a,[hFlags_0xFFF6]
+ ld a,[hFlags_0xFFFA]
bit 1,a ; is the menu double spaced?
jr z,.doubleSpaced1
ld bc,20
- jr .getOldMenuItemScreenPosition
.doubleSpaced1
- ld bc,40
-.getOldMenuItemScreenPosition
pop af
.oldMenuItemLoop
add hl,bc
@@ -4151,15 +4234,13 @@ PlaceMenuCursor:: ; 3b7c (0:3b7c)
ld a,[wCurrentMenuItem]
and a
jr z,.checkForArrow2
+ ld bc,40
push af
- ld a,[hFlags_0xFFF6]
+ ld a,[hFlags_0xFFFA]
bit 1,a ; is the menu double spaced?
jr z,.doubleSpaced2
ld bc,20
- jr .getCurrentMenuItemScreenPosition
.doubleSpaced2
- ld bc,40
-.getCurrentMenuItemScreenPosition
pop af
.currentMenuItemLoop
add hl,bc
@@ -4185,7 +4266,7 @@ PlaceMenuCursor:: ; 3b7c (0:3b7c)
; manipulated. In the case of submenus, this is used to show the location of
; the menu cursor in the parent menu. In the case of swapping items in list,
; this is used to mark the item that was first chosen to be swapped.
-PlaceUnfilledArrowMenuCursor:: ; 3bec (0:3bec)
+PlaceUnfilledArrowMenuCursor:: ; 3bd9 (0:3bd9)
ld b,a
ld a,[wMenuCursorLocation]
ld l,a
@@ -4196,7 +4277,7 @@ PlaceUnfilledArrowMenuCursor:: ; 3bec (0:3bec)
ret
; Replaces the menu cursor with a blank space.
-EraseMenuCursor:: ; 3bf9 (0:3bf9)
+EraseMenuCursor:: ; 3be6 (0:3be6)
ld a,[wMenuCursorLocation]
ld l,a
ld a,[wMenuCursorLocation + 1]