diff options
| -rw-r--r-- | main.asm | 272 | 
1 files changed, 267 insertions, 5 deletions
| @@ -40344,12 +40344,274 @@ UnnamedText_3cba1: ; 0x3cba1  	db $50  ; 0x3cba1 + 5 bytes -INCBIN "baserom.gbc",$3cba6,$3d0c5 - $3cba6 +INCBIN "baserom.gbc",$3cba6,$3ceb3 - $3cba6 -UnnamedText_3d0c5: ; 0x3d0c5 -	TX_FAR _UnnamedText_3d0c5 +InitBattleMenu: ; 0x3ceb3 F:4EB3 +	call $3725 ; restore saved screen +	ld a, [W_BATTLETYPE] +	and a +	jr nz, .nonstandardbattle ; 0x3ceba $9 +	call $4d5a ; redraw names and HP bars? +	call $6e94 +	call $3719 ; save screen +.nonstandardbattle +	ld a, [W_BATTLETYPE] +	cp $2 ; safari +	ld a, $b ; safari menu id +	jr nz, .menuselected ; 0x3cecc $2 +	ld a, $1b ; regular menu id +.menuselected +	ld [$d125], a +	call DisplayTextBoxID +	ld a, [$d05a] +	dec a +	jp nz, RegularBattleMenu ; regular battle +	; the following happens for the old man tutorial +	ld hl, W_PLAYERNAME +	ld de, W_GRASSRATE +	ld bc, $000b +	call CopyData ; temporary save the player name in unused space, +	              ; which is supposed to get overwritten when entering a map +	              ; with wild pokémon.  due to an oversight, the data may not +	              ; get overwritten (cinnabar) and the infamous missingno. +	              ; glitch can show up. +	ld hl, OldManName +	ld de, W_PLAYERNAME +	ld bc, $000b +	call CopyData +	; the following probably sets the keystrokes +	ld hl, $c4c1 +	ld [hl], $ed +	ld c, $50 +	call DelayFrames +	ld [hl], $7f +	ld hl, $c4e9 +	ld [hl], $ed +	ld c, $32 +	call DelayFrames +	ld [hl], $ec +	ld a, $2 +	jp $4fe8 + +OldManName: ; 0x3cf12 +    db "OLD MAN@" + +RegularBattleMenu: ; 0x3cf1a +	ld a, [$cc2d] +	ld [W_CURMENUITEMID], a +	ld [W_OLDMENUITEMID], a +	sub $2 +	jr c, .leftcolumn ; 0x3cf25 $8 +	ld [W_CURMENUITEMID], a +	ld [W_OLDMENUITEMID], a +	jr .rightcolumn ; 0x3cf2d $3f +.leftcolumn +	ld a, [W_BATTLETYPE] +	cp $2 +	ld a, $7f +	jr z, .safaribattle ; 0x3cf36 $a +	ld [$c4c7], a +	ld [$c4ef], a +	ld b, $9 +	jr .notsafari ; 0x3cf40 $14 +.safaribattle ; 3cf42 +	ld [$c4c5], a +	ld [$c4ed], a +	FuncCoord 7,14 +	ld hl, Coord +	ld de, W_NUMSAFARIBALLS +	ld bc, $0102 +	call PrintNumber +	ld b, $1 +.notsafari ; 3cf56 +	ld hl, W_TOPMENUITEMY +	ld a, $e +	ld [hli], a +	ld a, b +	ld [hli], a +	inc hl +	inc hl +	ld a, $1 +	ld [hli], a +	ld [hl], $11 +	call HandleMenuInput +	bit 4, a +	jr nz, .rightcolumn ; 0x3cf6a $2 +	jr .selection ; 0x3cf6c $46 +.rightcolumn ;3cf6e +	ld a, [W_BATTLETYPE] +	cp $2 +	ld a, $7f +	jr z, .safarirightcolumn ; 0x3cf75 $a +	ld [$c4c1], a +	ld [$c4e9], a +	ld b, $f +	jr .notsafarirightcolumn ; 0x3cf7f $14 +.safarirightcolumn ; 3cf81 +	ld [$c4b9], a +	ld [$c4e1], a +	FuncCoord 7,14 +	ld hl, Coord +	ld de, W_NUMSAFARIBALLS +	ld bc, $0102 +	call PrintNumber ; redraw +	ld b, $d +.notsafarirightcolumn +	ld hl, W_TOPMENUITEMY +	ld a, $e +	ld [hli], a +	ld a, b +	ld [hli], a +	inc hl +	inc hl +	ld a, $1 +	ld [hli], a +	ld a, $21 +	ld [hli], a +	call HandleMenuInput +	bit 5, a +	jr nz, .leftcolumn ; 0x3cfaa $83 +	ld a, [W_CURMENUITEMID] +	add $2 ; if we're in the right column, the actual id is +2 +	ld [W_CURMENUITEMID], a +.selection ; 3cfb4 +	call PlaceUnfilledArrowMenuCursor +	ld a, [W_BATTLETYPE] +	cp $2 +	ld a, [W_CURMENUITEMID] +	ld [$cc2d], a +	jr z, .asm_3cfd0 ; 0x3cfc2 $c +	cp $1 +	jr nz, .asm_3cfcb ; 0x3cfc6 $3 +	inc a +	jr .asm_3cfd0 ; 0x3cfc9 $5 +.asm_3cfcb +	cp $2 ; what +	jr nz, .asm_3cfd0 ; 0x3cfcd $1 +	dec a +.asm_3cfd0 +	and a +	jr nz, .asm_3cfe8 ; 0x3cfd1 $15 +	; first option was selected... +	ld a, [W_BATTLETYPE] +	cp $2 +	jr z, .safari1 +	xor a +	ld [$d120], a +	jp $3725 ; restore saved screen and return??? +.safari1 ; safari first option?? +	ld a, $8 +	ld [$cf91], a +	jr .asm_3d05f ; 0x3cfe6 $77 +.asm_3cfe8 +	cp $2 +	jp nz, $50ca +	ld a, [W_ISLINKBATTLE] +	cp $4 +	jr nz, .asm_3cffd ; 0x3cff2 $9 +	ld hl, ItemsCantBeUsedHere +	call PrintText +	jp $4eb3 +.asm_3cffd ; bag? +	call $36f4 ; copy bg? +	ld a, [W_BATTLETYPE] +	cp $2 +	jr nz, .asm_3d00e ; 0x3d005 $7 +	ld a, $15 +	ld [$cf91], a +	jr .asm_3d05f ; 0x3d00c $51 +.asm_3d00e +	call $3725 +	ld a, [W_BATTLETYPE] +	and a +	jr nz, .asm_3d01a ; 0x3d015 $3 +	call $4d5a +.asm_3d01a +	ld a, [W_BATTLETYPE] +	dec a +	jr nz, .asm_3d031 ; 0x3d01e $11 +	ld hl, .list +	ld a, l +	ld [$cf8b], a +	ld a, h +	ld [$cf8c], a +	jr .asm_3d03c ; 0x3d02b $f +.list +	db $01, $04, $32, $ff +.asm_3d031 +	ld hl, W_NUMBAGITEMS +	ld a, l +	ld [$cf8b], a +	ld a, h +	ld [$cf8c], a +.asm_3d03c +	xor a +	ld [$cf93], a +	ld a, $3 +	ld [$cf94], a +	ld a, [$cc2c] +	ld [W_CURMENUITEMID], a +	call DisplayListMenuID +	ld a, [$cc26] +	ld [$cc2c], a +	ld a, $0 +	ld [$cc37], a +	ld [$cc35], a +	jp c, $4eb3 +.asm_3d05f +	ld a, [$cf91] +	ld [$d11e], a +	call GetItemName +	call $3826 ; copy name +	xor a +	ld [$d152], a +	call UseItem +	call $6e5b +	call CleanLCD_OAM +	xor a +	ld [W_CURMENUITEMID], a +	ld a, [W_BATTLETYPE] +	cp $2 ; safari +	jr z, .asm_3d09c ; 0x3d081 $19 +	ld a, [$cd6a] +	and a +	jp z, $500e +	ld a, [W_PLAYERBATTSTATUS1] +	bit 5, a +	jr z, .asm_3d09c ; 0x3d08f $b +	ld hl, $d06a +	dec [hl] +	jr nz, .asm_3d09c ; 0x3d095 $5 +	ld hl, W_PLAYERBATTSTATUS1 +	res 5, [hl] +.asm_3d09c +	ld a, [$d11c] +	and a +	jr nz, .asm_3d0b7 ; 0x3d0a0 $15 +	ld a, [W_BATTLETYPE] +	cp $2 +	jr z, .asm_3d0b2 ; 0x3d0a7 $9 +	call $3725 +	call $4d5a ; redraw name and hp bar? +	call Delay3 +.asm_3d0b2 +	call GBPalNormal +	and a +	ret +.asm_3d0b7 +	call GBPalNormal +	xor a +	ld [$d11c], a +	ld a, $2 +	ld [$cf0b], a +	scf +	ret +; 0x3d0c5 + +ItemsCantBeUsedHere: ; 0x3d0c5 +	TX_FAR ItemsCantBeUsedHere_ ; 0x89831  	db $50 -; 0x3d0c5 + 5 bytes +; 0x3d0c5 + 5 bytes = 0x3d0ca  INCBIN "baserom.gbc",$3d0ca,$3d1f5 - $3d0ca @@ -80330,7 +80592,7 @@ _UnnamedText_3cba1: ; 0x8981f  	db $0, "Got away safely!", $58  ; 0x8981f + 18 bytes -_UnnamedText_3d0c5: ; 0x89831 +ItemsCantBeUsedHere_: ; 0x89831  	db $0, "Items can't be", $4f  	db "used here.", $58  ; 0x89831 + 26 bytes | 
