shithub: pokecrystal

Download patch

ref: d590a169c4cadbee9f8c821bef33fb51ff5651a5
parent: aeaaade74cb5ff4d4884a4846ffe9a2103d50960
author: Sanky <[email protected]>
date: Tue May 7 21:22:41 EDT 2013

disasm some menu stuff

--- a/main.asm
+++ b/main.asm
@@ -2108,8 +2108,18 @@
 	ret
 ; 1875
 
-INCBIN "baserom.gbc", $1875, $2063 - $1875
+INCBIN "baserom.gbc", $1875, $2009 - $1875
 
+PlayClickSFX: ; $2009
+	push de
+	ld de, SFX_READ_TEXT_2
+	call StartSFX
+	pop de
+	ret
+; 0x2012
+
+INCBIN "baserom.gbc", $2012, $2063 - $2012
+
 AskSerial: ; 2063
 ; send out a handshake while serial int is off
 	ld a, [$c2d4]
@@ -6004,8 +6014,302 @@
 	db "- ? ! ♂ ♀ / . , &"
 	db "lower  DEL   END "
 
-INCBIN "baserom.gbc", $11e5d, $12976 - $11e5d
+INCBIN "baserom.gbc", $11e5d, $125cd - $11e5d
 
+OpenMenu: ; 0x125cd
+	call $1fbf
+	ld de, SFX_MENU
+	call StartSFX
+	ld a, $1
+	ld hl, $6454
+	rst FarCall
+	ld hl, $d84d
+	bit 2, [hl]
+	ld hl, $66d3
+	jr z, .asm_125e9
+	ld hl, $66db ; draw the menu a little lower
+.asm_125e9
+	call $1d35
+	call SetUpMenuItems
+	ld a, [$d0d2]
+	ld [$cf88], a
+	call DrawMenuAccount_
+	call $1e7f
+	call $68d1
+	call $2e31
+	call $2e20
+	ld a, $1
+	ld hl, $64bf
+	rst $8
+	call $68de
+	call $0485
+	jr .asm_12621
+	call $1ad2
+	call $0485
+	call $6829
+	ld a, [$d0d2]
+	ld [$cf88], a
+.asm_12621
+	call MenuWait
+	jr c, .exit
+	call DrawMenuAccount
+	ld a, [$cf88]
+	ld [$d0d2], a
+	call PlayClickSFX
+	call $1bee
+	call $67e5
+	ld hl, .MenuPointerTable
+	ld e, a
+	ld d, $0
+	add hl, de
+	add hl, de
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+	
+.MenuPointerTable: ; $6644
+	 dw $6612
+	 dw $6652
+	 dw $66a2
+	 dw $6699
+	 dw $6691
+	 dw $665f
+	 dw $66b1
+
+.exit
+	ld a, [$ffd8]
+	push af
+	ld a, $1
+	ld [hOAMUpdate], a
+	call $0e5f
+	pop af
+	ld [hOAMUpdate], a
+	call $1c07
+	call $2dcf
+	call $0485
+	ret
+
+MenuWait: ; 0x12669
+; returns nc if A was pressed, c if B.
+	xor a
+	ld [hBGMapMode], a
+	call DrawMenuAccount
+	call $1e70
+	ld a, $ff
+	ld [MenuSelection], a
+.loop
+	call PrintMenuAccount
+	call $1f1a
+	ld a, [$cf73]
+	cp BUTTON_B
+	jr z, .b_button
+	cp BUTTON_A
+	jr z, .a_button
+	jr .loop
+.a_button
+	call PlayClickSFX
+	and a
+	ret
+.b_button
+	scf
+	ret
+; 0x12691
+
+
+INCBIN "baserom.gbc", $12691, $12721 - $12691
+
+MenuStringDex: ; 0x12721
+	db "#DEX@"
+
+MenuStringMon: ; 0x12726
+	db "#MON@"
+
+MenuStringPack: ; 0x1272b
+	db "PACK@"
+
+MenuStringProfile: ; 0x12730
+	db $52, "@"
+
+MenuStringSave: ; 0x12732
+	db "SAVE@"
+
+MenuStringOption: ; 0x12737
+	db "OPTION@"
+
+MenuStringExit: ; 0x1273e
+	db "EXIT@"
+
+MenuStringGear: ; 0x12743
+	db $24, "GEAR@"
+
+MenuStringQuit: ; 0x12749
+	db "QUIT@"
+
+MenuStringDescDex: ; 0x1274e
+	db "#MON", $4e, "database@"
+
+MenuStringDescParty: ; 0x1275c
+	db "Party ", $4a, $4e, "status@"
+
+MenuStringDescPack: ; 0x1276b
+	db "Contains", $4e, "items@"
+
+MenuStringDescGear: ; 0x1277a
+	db "Trainer's", $4e, "key device@"
+
+MenuStringDescProfile: ; 0x1278e
+	db "Your own", $4e, "status@"
+
+MenuStringDescSave: ; 0x1279e
+	db "Save your", $4e, "progress@"
+
+MenuStringDescOption: ; 0x127b1
+	db "Change", $4e, "settings@"
+
+MenuStringDescExit: ; 0x127c1
+	db "Close this", $4e, "menu@"
+
+MenuStringDescRetire: ; 0x127d1
+	db "Quit and", $4e, "be judged.@"
+
+; 0x127e5
+
+INCBIN "baserom.gbc", $127e5, $12800 - $127e5
+
+WriteMenuAccount:
+	push de
+	ld a, [MenuSelection]
+	cp $ff
+	jr z, .none 
+	call GetMenuAccountTextPointer
+	inc hl
+	inc hl
+	inc hl
+	inc hl
+	ld a, [hli]
+	ld d, [hl]
+	ld e, a
+	pop hl
+	call PlaceString
+	ret
+.none
+	pop de
+	ret
+
+GetMenuAccountTextPointer: ; 0x12819
+	ld e, a
+	ld d, $0
+	ld hl, $cf97 ; table is dynamic and stored in memory
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	add hl, de
+	ret
+
+SetUpMenuItems: ; 4:6829 = 0x12829
+	xor a
+	ld [$cf76], a
+	call $688d
+	ld hl, $d84c
+	bit 0, [hl]
+	jr z, .no_pokedex
+	ld a, $0
+	call AppendMenuList
+.no_pokedex
+	ld a, [PartyCount]
+	and a
+	jr z, .no_pokemon
+	ld a, $1
+	call AppendMenuList
+.no_pokemon
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .no_pack
+	ld hl, $d84d
+	bit 2, [hl]
+	jr nz, .no_pack
+	ld a, $2
+	call AppendMenuList
+.no_pack
+	ld hl, $d957
+	bit 7, [hl]
+	jr z, .no_exit
+	ld a, $7
+	call AppendMenuList
+.no_exit
+	ld a, $3
+	call AppendMenuList
+	ld a, [InLinkBattle]
+	and a
+	jr nz, .no_save
+	ld hl, $d84d
+	bit 2, [hl]
+	ld a, $8
+	jr nz, .write
+	ld a, $4
+.write
+	call AppendMenuList
+.no_save
+	ld a, $5
+	call AppendMenuList
+	ld a, $6
+	call AppendMenuList
+	ld a, c
+	ld [MenuItemsList], a
+	ret
+
+FillMenuList: ; 0x1288d
+	xor a
+	ld hl, MenuItemsList
+	ld [hli], a
+	ld a, $ff
+	ld bc, $000f
+	call ByteFill
+	ld de, MenuItemsList+1
+	ld c, 0
+	ret
+
+AppendMenuList: ; 0x128a0
+	ld [de], a
+	inc de
+	inc c
+	ret
+
+DrawMenuAccount_:; 0x128a4
+	jp DrawMenuAccount
+
+PrintMenuAccount: ; 4:68a7 0x128a7
+	call IsMenuAccountOn
+	ret z
+	call DrawMenuAccount
+	decoord 0, 14 ; $c5b8
+	jp $6800
+
+DrawMenuAccount: ; 4:68b4 0x128b4
+	call IsMenuAccountOn
+	ret z
+	hlcoord 0, 13 ; $c5a4
+	ld bc, $050a
+	call ClearBox
+	hlcoord 0, 13 ; $c5a4
+	ld b, $3
+	ld c, $8
+	jp TextBoxPalette
+
+IsMenuAccountOn: ; 0x128cb
+	ld a, [Options2]
+	and $1
+	ret
+; 0x128d1
+
+INCBIN "baserom.gbc", $128d1, $12976 - $128d1
+
 OpenPartyMenu: ; $12976
 	ld a, [PartyCount]
 	and a
@@ -6070,7 +6374,7 @@
 	ld hl, $4d19
 	rst FarCall
 	call $389c
-	ld a, [$cf74] ; menu selection?
+	ld a, [MenuSelection]
 	ld hl, PokemonSubmenuActionPointerTable
 	ld de, $0003 ; skip 3 bytes each time
 	call IsInArray
@@ -17593,7 +17897,7 @@
 	ld [hl], a
 	ret
 .asm_117b8c
-	call $2009
+	call PlayClickSFX
 	ld a, [$cf64]
 	and a
 	jr nz, .asm_117ba4 ; 0x117b93 $f
--- a/wram.asm
+++ b/wram.asm
@@ -815,8 +815,13 @@
 CurSpecies: ; cf60
 	ds 1
 
-	ds 33
+	ds $13
 
+MenuSelection:; cf74
+    ds 1
+    
+	ds $cf82-$cf74
+
 TileY: ; cf82
 	ds 1
 TileX: ; cf83
@@ -899,6 +904,7 @@
 	
 	ds 55
 
+MenuItemsList:
 CurFruitTree: ; d03e
 	ds 1
 CurFruit: ; d03f