diff options
| -rw-r--r-- | constants.asm | 1 | ||||
| -rw-r--r-- | main.asm | 243 | 
2 files changed, 233 insertions, 11 deletions
| diff --git a/constants.asm b/constants.asm index 14c66aab..c6f42b51 100644 --- a/constants.asm +++ b/constants.asm @@ -148,6 +148,7 @@ W_MENUWRAPPINGENABLED EQU $CC4A  W_PLAYERSUBSITUTEHP EQU $CCD7  W_ENEMYSUBSITUTEHP EQU $CCD8 +W_MOVEMENUTYPE       EQU $CCDB ; 0=regular, 1=mimic, 2=above message box (relearn, heal pp..)  W_PLAYERSELECTEDMOVE EQU $CCDC  W_ENEMYSELECTEDMOVE  EQU $CCDD @@ -17552,7 +17552,7 @@ ItemUsePPRestore: ; 631E  	cp a,ELIXER  	jp nc,.useElixir ; if Elixir or Max Elixir  	ld a,$02 -	ld [$ccdb],a +	ld [W_MOVEMENUTYPE],a  	ld hl,RaisePPWhichTechniqueText  	ld a,[$cd3d]  	cp a,ETHER ; is it a PP Up? @@ -17562,8 +17562,8 @@ ItemUsePPRestore: ; 631E  	call PrintText  	xor a  	ld [$cc2e],a -	ld hl,$5219 -	ld b,$0f +	ld hl,MoveSelectionMenu +	ld b,BANK(MoveSelectionMenu)  	call Bankswitch ; move selection menu  	ld a,0  	ld [$cc2e],a @@ -40657,19 +40657,240 @@ UnnamedText_3d1f5: ; 0x3d1f5  	db $50  ; 0x3d1f5 + 5 bytes -INCBIN "baserom.gbc",$3d1fa,$3d3ae - $3d1fa +INCBIN "baserom.gbc",$3d1fa,$3D219 - $3d1fa + +MoveSelectionMenu: ; 3D219 F:5219 +	ld a, [W_MOVEMENUTYPE] ; menu type +	dec a +	jr z, .mimicmenu ; 0x3d21d $56 +	dec a +	jr z, .relearnmenu ; 0x3d220 $6f +	jr .regularmenu ; 0x3d222 $25 +.loadmoves ; 3d222 , called +	ld de, $d0dc +	ld bc, $0004 +	call CopyData +	ld hl, $5b87 +	ld b, $e +	call Bankswitch +	ret +.writemoves ; 5236 , called +	ld de, $d0e1 +	ld a, [$ff00+$f6] +	set 2, a +	ld [$ff00+$f6], a +	call PlaceString +	ld a, [$ff00+$f6] +	res 2, a +	ld [$ff00+$f6], a +	ret +.regularmenu ; 3D249 +	call $53f5 +	ret z +	ld hl, $d01c ; W_PLAYERMON? +	call .loadmoves +	FuncCoord 4, 12 ; $c494 +	ld hl, Coord +	ld b, $4 +	ld c, $e +	di +	call TextBoxBorder +	FuncCoord 4, 12 ; $c494 +	ld hl, Coord +	ld [hl], $7a +	FuncCoord 10, 12 ; $c49a +	ld hl, Coord +	ld [hl], $7e +	ei +	FuncCoord 6, 13 ; $c4aa +	ld hl, Coord +	call .writemoves +	ld b, $5 +	ld a, $c +	jr .menuset ; 0x3d273 $3f +.mimicmenu +	ld hl, $cfed +	call .loadmoves +	FuncCoord 0, 7 ; $c42c +	ld hl, Coord +	ld b, $4 +	ld c, $e +	call TextBoxBorder +	ld hl, $c442 +	call .writemoves +	ld b, $1 +	ld a, $7 +	jr .menuset ; 0x3d28f $23 +.relearnmenu +	ld a, [W_WHICHPOKEMON] +	ld hl, $d173 +	ld bc, $002c +	call AddNTimes +	call .loadmoves +	FuncCoord 4, 7 ; $c430 +	ld hl, Coord +	ld b, $4 +	ld c, $e +	call TextBoxBorder +	FuncCoord 6, 8 ; $c446 +	ld hl, Coord +	call .writemoves +	ld b, $5 +	ld a, $7 +.menuset +	ld hl, W_TOPMENUITEMY +	ld [hli], a +	ld a, b +	ld [hli], a ; W_TOPMENUITEMX +	ld a, [W_MOVEMENUTYPE] +	cp $1 +	jr z, .selectedmoveknown ; 0x3d2bf $8 +	ld a, $1 +	jr nc, .selectedmoveknown ; 0x3d2c3 $4 +	ld a, [W_PLAYERMOVELISTINDEX] +	inc a +.selectedmoveknown +	ld [hli], a ; W_CURMENUITEMID +	inc hl ; W_TILEBEHINDCURSOR untouched +	ld a, [$cd6c] +	inc a +	inc a +	ld [hli], a ; W_MAXMENUITEMID +	ld a, [W_MOVEMENUTYPE] +	dec a +	ld b, $c1 ; can't use B +	jr z, .matchedkeyspicked ; 0x3d2d7 $17 +	dec a +	ld b, $c3 +	jr z, .matchedkeyspicked ; 0x3d2dc $12 +	ld a, [W_ISLINKBATTLE] +	cp $4 +	jr z, .matchedkeyspicked ; 0x3d2e3 $b +	ld a, [$d733] +	bit 0, a +	ld b, $c7 +	jr z, .matchedkeyspicked ; 0x3d2ec $2 +	ld b, $ff +.matchedkeyspicked +	ld a, b +	ld [hli], a ; W_MENUWATCHEDKEYS +	ld a, [W_MOVEMENUTYPE] +	cp $1 +	jr z, .movelistindex1 ; 0x3d2f7 $4 +	ld a, [W_PLAYERMOVELISTINDEX] +	inc a +.movelistindex1 +	ld [hl], a ; W_OLDMENUITEMID +	ld a, [W_MOVEMENUTYPE] +	and a +	jr z, .battleselect ; 0x3d302 $e +	dec a +	jr nz, .select ; 0x3d305 $27 +	FuncCoord 1, 14 ; $c4b9 +	ld hl, Coord +	ld de, WhichTechniqueString +	call PlaceString +	jr .select ; 0x3d310 $1c +.battleselect +	ld a, [$d733] +	bit 0, a +	jr nz, .select ; 0x3d317 $15 +	call $54b6 +	ld a, [$cc35] +	and a +	jr z, .select ; 0x3d320 $c +	ld hl, $c4a9 +	dec a +	ld bc, $0014 +	call AddNTimes +	ld [hl], $ec +.select ; 3d32e +	ld hl, $fff6 +	set 1, [hl] +	call HandleMenuInput +	ld hl, $fff6 +	res 1, [hl] +	bit 6, a +	jp nz, $53c9 ; up +	bit 7, a +	jp nz, $53dd ; down +	bit 2, a +	jp nz, $5435 ; select +	bit 1, a ; B, but it was reset above? +	push af +	xor a +	ld [$cc35], a +	ld a, [W_CURMENUITEMID] +	dec a +	ld [W_CURMENUITEMID], a +	ld b, a +	ld a, [W_MOVEMENUTYPE] +	dec a ; if not mimic +	jr nz, .nob ; 0x3d35d $2 +	pop af +	ret +.nob; 3d361 +	dec a +	ld a, b +	ld [W_PLAYERMOVELISTINDEX], a +	jr nz, .moveselected ; 0x3d366 $2 +	pop af +	ret +.moveselected ; 3d36a +	pop af +	ret nz +	ld hl, W_PLAYERMONPP +	ld a, [W_CURMENUITEMID] +	ld c, a +	ld b, $0 +	add hl, bc +	ld a, [hl] +	and $3f +	jr z, .nopp ; 0x3d379 $27 +	ld a, [W_PLAYERDISABLEDMOVE] +	swap a +	and $f +	dec a +	cp c +	jr z, .disabled ; 0x3d384 $17 +	ld a, [W_PLAYERBATTSTATUS3] +	bit 3, a ; transformed +	jr nz, .dummy ; game freak derp +.dummy ; 3d38d +	ld a, [W_CURMENUITEMID] +	ld hl, $d01c +	ld c, a +	ld b, $0 +	add hl, bc +	ld a, [hl] +	ld [W_PLAYERSELECTEDMOVE], a +	xor a +	ret +.disabled ;  +	ld hl, MoveDisabledText +	jr .print ; 0x3d3a0 $3 +.nopp ;  +	ld hl, MoveNoPPText +.print ; 3d3a5 +	call PrintText +	call $3725 +	jp MoveSelectionMenu -UnnamedText_3d3ae: ; 0x3d3ae -	TX_FAR _UnnamedText_3d3ae +MoveNoPPText: ; 0x3d3ae +	TX_FAR MoveNoPPText_  	db $50  ; 0x3d3ae + 5 bytes -UnnamedText_3d3b3: ; 0x3d3b3 -	TX_FAR _UnnamedText_3d3b3 +MoveDisabledText: ; 0x3d3b3 +	TX_FAR MoveDisabledText_  	db $50  ; 0x3d3b3 + 5 bytes -INCBIN "baserom.gbc",$3d3b8,$3d430 - $3d3b8 +WhichTechniqueString: ; 3d3b8 +    db "WHICH TECHNIQUE?@" +; 3d3c9 + +INCBIN "baserom.gbc",$3d3c9,$3d430 - $3d3c9  UnnamedText_3d430: ; 0x3d430  	TX_FAR _UnnamedText_3d430 @@ -80640,12 +80861,12 @@ _UnnamedText_3d1f5: ; 0x8984b  	db "already out!", $58  ; 0x8984b + 21 bytes -_UnnamedText_3d3ae: ; 0x89860 +MoveNoPPText_: ; 0x89860  	db $0, "No PP left for", $4f  	db "this move!", $58  ; 0x89860 + 27 bytes -_UnnamedText_3d3b3: ; 0x8987b +MoveDisabledText_: ; 0x8987b  	db $0, "The move is", $4f  	db "disabled!", $58  ; 0x8987b + 23 bytes | 
