Options menu, some mobile fns

This commit is contained in:
PikalaxALT
2015-11-16 16:01:45 -05:00
parent 4b5424368f
commit 435b0cf686
25 changed files with 2237 additions and 2162 deletions

View File

@@ -1,4 +1,4 @@
PALPACKET_LENGTH EQU $10
INCLUDE "predef/sgb.asm"
SHINY_ATK_BIT EQU 5
@@ -89,7 +89,7 @@ Function8aa4: ; 8aa4
push bc
ld hl, PalPacket_9ce6
ld de, wcda9
ld bc, PalPacket_9cf6 - PalPacket_9ce6
ld bc, PALPACKET_LENGTH
call CopyBytes
pop bc
pop de
@@ -232,7 +232,7 @@ Function8b81: ; 8b81
push af
ld hl, PalPacket_9ce6
ld de, wcda9
ld bc, $0010
ld bc, PALPACKET_LENGTH
call CopyBytes
pop af
call Function9775
@@ -437,7 +437,7 @@ endr
push hl
ld hl, PalPacket_9ce6
ld de, wcda9
ld bc, $0010
ld bc, PALPACKET_LENGTH
call CopyBytes
pop hl
rept 2
@@ -792,7 +792,7 @@ Function974b: ; 974b
and a
jp nz, Function97f9
ld a, [wPlayerSpriteSetupFlags]
bit 2, a
bit 2, a ; transformed to male
jr nz, .male
ld a, [PlayerGender]
and a
@@ -1212,7 +1212,7 @@ Function99d8: ; 99d8
ld a, $e4
ld [rBGP], a
ld de, VTiles1
ld bc, $0140
ld bc, 20 tiles
call CopyData
ld b, $12
.asm_99ea
@@ -1367,6 +1367,7 @@ BlkPacket_9b86: ; 9a86
; 9b96
; 9b96
PalPacket_9b96: db $51, $48, $00, $49, $00, $4a, $00, $4b, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9ba6: db $51, $2b, $00, $24, $00, $20, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9bb6: db $51, $41, $00, $42, $00, $43, $00, $44, $00, $00, $00, $00, $00, $00, $00, $00

View File

@@ -3053,7 +3053,7 @@ Function57bc: ; 57bc
ret
.ok
ld a, 0
ld a, PERSON_ACTION_00
ld [PlayerAction], a
ret
; 57ca

565
engine/options_menu.asm Executable file
View File

@@ -0,0 +1,565 @@
_OptionsMenu: ; e41d0
ld hl, hInMenu
ld a, [hl]
push af
ld [hl], $1
call ClearBGPalettes
hlcoord 0, 0
ld b, $10
ld c, $12
call TextBox
hlcoord 2, 2
ld de, StringOptions
call PlaceString
xor a
ld [wJumptableIndex], a
ld c, $6 ; number of items on the menu minus 1 (for cancel)
.print_text_loop ; this next will display the settings of each option when the menu is opened
push bc
xor a
ld [hJoyLast], a
call GetOptionPointer
pop bc
ld hl, wJumptableIndex
inc [hl]
dec c
jr nz, .print_text_loop
call UpdateFrame
xor a
ld [wJumptableIndex], a
inc a
ld [hBGMapMode], a
call WaitBGMap
ld b, SCGB_08
call GetSGBLayout
call SetPalettes
.joypad_loop
call JoyTextDelay
ld a, [hJoyPressed]
and START | B_BUTTON
jr nz, .ExitOptions
call OptionsControl
jr c, .dpad
call GetOptionPointer
jr c, .ExitOptions
.dpad
call Functione455c
ld c, 3
call DelayFrames
jr .joypad_loop
.ExitOptions
ld de, SFX_TRANSACTION
call PlaySFX
call WaitSFX
pop af
ld [hInMenu], a
ret
; e4241
StringOptions: ; e4241
db "TEXT SPEED<LNBRK>"
db " :<LNBRK>"
db "BATTLE SCENE<LNBRK>"
db " :<LNBRK>"
db "BATTLE STYLE<LNBRK>"
db " :<LNBRK>"
db "SOUND<LNBRK>"
db " :<LNBRK>"
db "PRINT<LNBRK>"
db " :<LNBRK>"
db "MENU ACCOUNT<LNBRK>"
db " :<LNBRK>"
db "FRAME<LNBRK>"
db " :TYPE<LNBRK>"
db "CANCEL@"
; e42d6
GetOptionPointer: ; e42d6
ld a, [wJumptableIndex] ; load the cursor position to a
ld e, a ; copy it to de
ld d, 0
ld hl, .Pointers
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl] ; jump to the code of the current highlighted item
; e42e5
.Pointers
dw Options_TextSpeed
dw Options_BattleScene
dw Options_BattleStyle
dw Options_Sound
dw Options_Print
dw Options_MenuAccount
dw Options_Frame
dw Options_Cancel
; e42f5
Options_TextSpeed: ; e42f5
call GetTextSpeed
ld a, [hJoyPressed]
bit D_LEFT_F, a
jr nz, .LeftPressed
bit D_RIGHT_F, a
jr z, .NonePressed
ld a, c ; right pressed
cp SLOW_TEXT
jr c, .Increase
ld c, FAST_TEXT +- 1
.Increase
inc c
ld a, e
jr .Save
.LeftPressed
ld a, c
and a
jr nz, .Decrease
ld c, SLOW_TEXT + 1
.Decrease
dec c
ld a, d
.Save
ld b, a
ld a, [Options]
and $f0
or b
ld [Options], a
.NonePressed
ld b, 0
ld hl, .Strings
rept 2
add hl, bc
endr
ld e, [hl]
inc hl
ld d, [hl]
hlcoord 11, 3
call PlaceString
and a
ret
; e4331
.Strings
dw .Fast
dw .Mid
dw .Slow
.Fast
db "FAST@"
.Mid
db "MID @"
.Slow
db "SLOW@"
; e4346
GetTextSpeed: ; e4346
ld a, [Options] ; This converts the number of frames, to 0, 1, 2 representing speed
and 7
cp 5 ; 5 frames of delay is slow
jr z, .slow
cp 1 ; 1 frame of delay is fast
jr z, .fast
ld c, MED_TEXT ; set it to mid if not one of the above
lb de, 1, 5
ret
.slow
ld c, SLOW_TEXT
lb de, 3, 1
ret
.fast
ld c, FAST_TEXT
lb de, 5, 3
ret
; e4365
Options_BattleScene: ; e4365
ld hl, Options
ld a, [hJoyPressed]
bit D_LEFT_F, a
jr nz, .LeftPressed
bit D_RIGHT_F, a
jr z, .NonePressed
bit BATTLE_SCENE, [hl]
jr nz, .ToggleOn
jr .ToggleOff
.LeftPressed
bit BATTLE_SCENE, [hl]
jr z, .ToggleOff
jr .ToggleOn
.NonePressed
bit BATTLE_SCENE, [hl]
jr z, .ToggleOn
jr .ToggleOff
.ToggleOn
res BATTLE_SCENE, [hl]
ld de, .On
jr .Display
.ToggleOff
set BATTLE_SCENE, [hl]
ld de, .Off
.Display
hlcoord 11, 5
call PlaceString
and a
ret
; e4398
.On
db "ON @"
.Off
db "OFF@"
; e43a0
Options_BattleStyle: ; e43a0
ld hl, Options
ld a, [hJoyPressed]
bit D_LEFT_F, a
jr nz, .LeftPressed
bit D_RIGHT_F, a
jr z, .NonePressed
bit BATTLE_SHIFT, [hl]
jr nz, .ToggleShift
jr .ToggleSet
.LeftPressed
bit BATTLE_SHIFT, [hl]
jr z, .ToggleSet
jr .ToggleShift
.NonePressed
bit BATTLE_SHIFT, [hl]
jr nz, .ToggleSet
.ToggleShift
res BATTLE_SHIFT, [hl]
ld de, .Shift
jr .Display
.ToggleSet
set BATTLE_SHIFT, [hl]
ld de, .Set
.Display
hlcoord 11, 7
call PlaceString
and a
ret
; e43d1
.Shift
db "SHIFT@"
.Set
db "SET @"
; e43dd
Options_Sound: ; e43dd
ld hl, Options
ld a, [hJoyPressed]
bit D_LEFT_F, a
jr nz, .LeftPressed
bit D_RIGHT_F, a
jr z, .NonePressed
bit STEREO, [hl]
jr nz, .SetMono
jr .SetStereo
.LeftPressed
bit STEREO, [hl]
jr z, .SetStereo
jr .SetMono
.NonePressed
bit STEREO, [hl]
jr nz, .ToggleStereo
jr .ToggleMono
.SetMono
res STEREO, [hl]
call RestartMapMusic
.ToggleMono
ld de, .Mono
jr .Display
.SetStereo
set STEREO, [hl]
call RestartMapMusic
.ToggleStereo
ld de, .Stereo
.Display
hlcoord 11, 9
call PlaceString
and a
ret
; e4416
.Mono
db "MONO @"
.Stereo
db "STEREO@"
; e4424
Options_Print: ; e4424
call GetPrinterSetting
ld a, [hJoyPressed]
bit D_LEFT_F, a
jr nz, .LeftPressed
bit D_RIGHT_F, a
jr z, .NonePressed
ld a, c
cp 4
jr c, .Increase
ld c, -1
.Increase
inc c
ld a, e
jr .Save
.LeftPressed
ld a, c
and a
jr nz, .Decrease
ld c, 5
.Decrease
dec c
ld a, d
.Save
ld b, a
ld [GBPrinter], a
.NonePressed
ld b, $0
ld hl, .Strings
rept 2
add hl, bc
endr
ld e, [hl]
inc hl
ld d, [hl]
hlcoord 11, 11
call PlaceString
and a
ret
; e445a
.Strings
dw .Lightest
dw .Lighter
dw .Normal
dw .Darker
dw .Darkest
.Lightest
db "LIGHTEST@"
.Lighter
db "LIGHTER @"
.Normal
db "NORMAL @"
.Darker
db "DARKER @"
.Darkest
db "DARKEST @"
; e4491
GetPrinterSetting: ; e4491
ld a, [GBPrinter] ; converts from the stored printer setting to 0,1,2,3,4
and a
jr z, .IsLightest
cp PRINT_LIGHTER
jr z, .IsLight
cp PRINT_DARKER
jr z, .IsDark
cp PRINT_DARKEST
jr z, .IsDarkest
ld c, 2 ; normal if none of the above
lb de, PRINT_LIGHTER, PRINT_DARKER ; the 2 values next to this setting
ret
.IsLightest
ld c, 0
lb de, PRINT_DARKEST, PRINT_LIGHTER ; the 2 values next to this setting
ret
.IsLight
ld c, 1
lb de, PRINT_LIGHTEST, PRINT_NORMAL ; the 2 values next to this setting
ret
.IsDark
ld c, 3
lb de, PRINT_NORMAL, PRINT_DARKEST ; the 2 values next to this setting
ret
.IsDarkest
ld c, 4
lb de, PRINT_DARKER, PRINT_LIGHTEST ; the 2 values next to this setting
ret
; e44c1
Options_MenuAccount: ; e44c1
ld hl, Options2
ld a, [hJoyPressed]
bit D_LEFT_F, a
jr nz, .LeftPressed
bit D_RIGHT_F, a
jr z, .NonePressed
bit MENU_ACCOUNT, [hl]
jr nz, .ToggleOff
jr .ToggleOn
.LeftPressed
bit MENU_ACCOUNT, [hl]
jr z, .ToggleOn
jr .ToggleOff
.NonePressed
bit MENU_ACCOUNT, [hl]
jr nz, .ToggleOn
.ToggleOff
res MENU_ACCOUNT, [hl]
ld de, .Off
jr .Display
.ToggleOn
set MENU_ACCOUNT, [hl]
ld de, .On
.Display
hlcoord 11, 13
call PlaceString
and a
ret
; e44f2
.Off
db "OFF@"
.On
db "ON @"
; e44fa
Options_Frame: ; e44fa
ld hl, TextBoxFrame
ld a, [hJoyPressed]
bit D_LEFT_F, a
jr nz, .LeftPressed
bit D_RIGHT_F, a
jr nz, .RightPressed
and a
ret
.RightPressed
ld a, [hl]
inc a
jr .Save
.LeftPressed
ld a, [hl]
dec a
.Save
and $7
ld [hl], a
UpdateFrame: ; e4512
ld a, [TextBoxFrame]
hlcoord 16, 15 ; where on the screen the number is drawn
add "1"
ld [hl], a
call LoadFontsExtra
and a
ret
; e4520
Options_Cancel: ; e4520
ld a, [hJoyPressed]
and A_BUTTON
jr nz, .Exit
and a
ret
.Exit
scf
ret
; e452a
OptionsControl: ; e452a
ld hl, wJumptableIndex
ld a, [hJoyLast]
cp D_DOWN
jr z, .DownPressed
cp D_UP
jr z, .UpPressed
and a
ret
.DownPressed
ld a, [hl] ; load the cursor position to a
cp $7 ; maximum number of items in option menu
jr nz, .CheckFive
ld [hl], $0
scf
ret
.CheckFive ; I have no idea why this exists...
cp $5
jr nz, .Increase
ld [hl], $5
.Increase
inc [hl]
scf
ret
.UpPressed
ld a, [hl]
cp $6
jr nz, .NotSix
ld [hl], $5 ; Another thing where I'm not sure why it exists
scf
ret
.NotSix
and a
jr nz, .Decrease
ld [hl], $8 ; number of option items +1
.Decrease
dec [hl]
scf
ret
; e455c

View File

@@ -402,3 +402,263 @@ PlacesAndPeopleName: db "Places & People@"
LetsAllSingName: db "Let's All Sing!@"
PokeFluteStationName: db "# FLUTE@"
; 9191c
Function9191c: ; 9191c
ld hl, Options
ld a, [hl]
push af
set 4, [hl]
ld a, [hInMenu]
push af
ld a, $1
ld [hInMenu], a
ld a, [VramState]
push af
xor a
ld [VramState], a
call ClearBGPalettes
call ClearTileMap
call ClearSprites
call DisableLCD
call Function90c4e
callba Function8cf53
ld a, 8
call SkipMusic
ld a, $e3
ld [rLCDC], a
call Function90d56
ld [wd002], a
ld [wd003], a
xor a
ld [hBGMapMode], a
call Function91a04
call Function3200
ld a, [wd002]
call Function9106a
ld a, [wd003]
call Function91098
ld a, c
ld [wd004], a
ld a, b
ld [wd005], a
ld b, SCGB_02
call GetSGBLayout
call SetPalettes
ld a, [hCGB]
and a
jr z, .asm_9198b
ld a, $e4
call Functioncf8
call DelayFrame
.asm_9198b
ld a, [wd002]
cp KANTO_LANDMARK
jr nc, .asm_9199b
ld d, KANTO_LANDMARK - 1
ld e, 1
call Function919b0
jr .asm_919a1
.asm_9199b
call Function910e8
call Function919b0
.asm_919a1
pop af
ld [VramState], a
pop af
ld [hInMenu], a
pop af
ld [Options], a
call ClearBGPalettes
ret
; 919b0
Function919b0: ; 919b0
.asm_919b0
call JoyTextDelay
ld hl, hJoyPressed
ld a, [hl]
and B_BUTTON
ret nz
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, .asm_919d4
ld a, [hl]
and D_DOWN
jr nz, .asm_919e1
.asm_919c7
push de
callba Function8cf69
pop de
call DelayFrame
jr .asm_919b0
.asm_919d4
ld hl, wd003
ld a, [hl]
cp d
jr c, .asm_919de
ld a, e
dec a
ld [hl], a
.asm_919de
inc [hl]
jr .asm_919ec
.asm_919e1
ld hl, wd003
ld a, [hl]
cp e
jr nz, .asm_919eb
ld a, d
inc a
ld [hl], a
.asm_919eb
dec [hl]
.asm_919ec
push de
ld a, [wd003]
call Function910b4
ld a, [wd004]
ld c, a
ld a, [wd005]
ld b, a
ld a, [wd003]
call Function910d4
pop de
jr .asm_919c7
; 91a04
Function91a04: ; 91a04
ld a, [wd002]
cp KANTO_LANDMARK
jr nc, .asm_91a0f
ld e, $0
jr .asm_91a11
.asm_91a0f
ld e, $1
.asm_91a11
callba Function91ae1
ld a, $7
ld bc, 6
hlcoord 1, 0
call ByteFill
hlcoord 0, 0
ld [hl], $6
hlcoord 7, 0
ld [hl], $17
hlcoord 7, 1
ld [hl], $16
hlcoord 7, 2
ld [hl], $26
ld a, $7
ld bc, NAME_LENGTH
hlcoord 8, 2
call ByteFill
hlcoord 19, 2
ld [hl], $17
ld a, [wd003]
call Function910b4
callba TownMapPals
ret
; 91a53
PlayRadio: ; 91a53
ld hl, Options
ld a, [hl]
push af
set 4, [hl]
call .PlayStation
ld c, 100
call DelayFrames
.loop
call JoyTextDelay
ld a, [hJoyPressed]
and A_BUTTON | B_BUTTON
jr nz, .stop
ld a, [wc6da]
ld l, a
ld a, [wc6db]
ld h, a
ld a, [wc6d9]
and a
jr z, .zero
rst FarCall
.zero
call DelayFrame
jr .loop
.stop
pop af
ld [Options], a
call Function91492
ret
; 91a87
.PlayStation: ; 91a87
ld a, -1
ld [EnemyTurnsTaken], a
ld hl, .StationPointers
ld d, $0
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
ld de, .jump_return
push de
jp [hl]
.jump_return
push de
hlcoord 0, 12
lb bc, 4, 18
call TextBox
hlcoord 1, 14
ld [hl], $72
pop de
hlcoord 2, 14
call PlaceString
ld h, b
ld l, c
ld [hl], $73
call WaitBGMap
ret
; 91ab9
.StationPointers: ; 91ab9
dw .OakOrPnP
dw LoadStation_OaksPokemonTalk
dw LoadStation_PokedexShow
dw LoadStation_PokemonMusic
dw LoadStation_LuckyChannel
dw LoadStation_UnownRadio
dw LoadStation_PlacesAndPeople
dw LoadStation_LetsAllSing
dw LoadStation_RocketRadio
; 91acb
.OakOrPnP: ; 91acb
call IsInJohto
and a
jr nz, .kanto
call UpdateTime
ld a, [TimeOfDay]
and a
jp z, LoadStation_PokedexShow
jp LoadStation_OaksPokemonTalk
.kanto
jp LoadStation_PlacesAndPeople
; 91ae1

View File

@@ -160,7 +160,7 @@ SpecialsPointers:: ; c029
add_special Function17d2b6
add_special Function17d2ce
add_special Function17f53d
add_special Function103612
add_special AskMobileOrCable
add_special SpecialHoOhChamber
add_special Function102142
add_special Special_CelebiShrineEvent
@@ -180,7 +180,7 @@ SpecialsPointers:: ; c029
add_special Mobile_HealParty
add_special RefreshSprites
add_special Function1037c2
add_special Function10630f
add_special Mobile_DummyReturnFalse
add_special Function103780
add_special Function10387b
add_special Function4ae12

View File

@@ -1,3 +1,17 @@
Function91ae1: ; 91ae1
ld a, e
and a
jr nz, .kanto
call Function91ff2
call FillJohtoMap
ret
.kanto
call Function91ff2
call FillKantoMap
ret
; 91af3
_FlyMap: ; 91af3
call ClearBGPalettes
call ClearTileMap
@@ -419,14 +433,18 @@ Function91d11: ; 91d11
ld [hBGMapMode], a
ld a, $1
ld [hInMenu], a
ld de, GFX_922d1
ld hl, VTiles0 tile $7f
lb bc, BANK(GFX_922d1), 1
call Request2bpp ; actually 1bpp
call Function91ed0
ld hl, VTiles0 tile $78
ld c, $4
call Request2bpp
call Function91ff2
call FillKantoMap
call Function91de9
@@ -445,27 +463,27 @@ Function91d11: ; 91d11
ld [hBGMapMode], a
xor a
call Function91e1e
.asm_91d6e
.loop
call JoyTextDelay
ld hl, hJoyPressed
ld a, [hl]
and A_BUTTON | B_BUTTON
jr nz, .asm_91d8f
jr nz, .a_b
ld a, [hJoypadDown]
and SELECT
jr nz, .asm_91d87
jr nz, .select
call Function91d9b
call Function91dcd
jr .asm_91d8a
jr .next
.asm_91d87
.select
call Function91e5a
.asm_91d8a
.next
call DelayFrame
jr .asm_91d6e
jr .loop
.asm_91d8f
.a_b
call ClearSprites
pop af
ld [wd003], a
@@ -914,3 +932,137 @@ GFX_922e1: ; 922e1
INCBIN "gfx/unknown/0922e1.2bpp"
GFX_92301: ; 92301
INCBIN "gfx/unknown/092301.2bpp"
Function92311: ; unreferenced
xor a
ld [wd002], a
call ClearBGPalettes
call ClearTileMap
call ClearSprites
ld hl, hInMenu
ld a, [hl]
push af
ld [hl], $1
xor a
ld [hBGMapMode], a
callba Function8cf53
call Function91ff2
ld de, GFX_922e1
ld hl, VTiles2 tile $30
lb bc, BANK(GFX_922e1), 6
call Request1bpp
call FillKantoMap
call TownMapBubble
call TownMapPals
ld hl, VBGMap1
call TownMapBGUpdate
call FillJohtoMap
call TownMapBubble
call TownMapPals
ld hl, VBGMap0
call TownMapBGUpdate
call TownMapMon
ld a, c
ld [wd003], a
ld a, b
ld [wd004], a
ld b, SCGB_02
call GetSGBLayout
call SetPalettes
.loop
call JoyTextDelay
ld hl, hJoyPressed
ld a, [hl]
and B_BUTTON
jr nz, .pressedB
ld a, [hl]
and A_BUTTON
jr nz, .pressedA
call Function923b8
call GetMapCursorCoordinates
callba Function8cf69
call DelayFrame
jr .loop
.pressedB
ld a, -1
jr .asm_9239f
.pressedA
ld a, [wd002]
ld l, a
ld h, 0
add hl, hl
ld de, Flypoints + 1
add hl, de
ld a, [hl]
.asm_9239f
ld [wd002], a
pop af
ld [hInMenu], a
call ClearBGPalettes
ld a, $90
ld [hWY], a
xor a
ld [hBGMapAddress], a
ld a, VBGMap0 / $100
ld [hBGMapAddress + 1], a
ld a, [wd002]
ld e, a
ret
; 923b8
Function923b8: ; 923b8
ld hl, hJoyLast
ld a, [hl]
and D_DOWN | D_RIGHT
jr nz, .asm_923c6
ld a, [hl]
and D_UP | D_LEFT
jr nz, .asm_923d3
ret
.asm_923c6
ld hl, wd002
ld a, [hl]
cp FLY_INDIGO
jr c, .asm_923d0
ld [hl], -1
.asm_923d0
inc [hl]
jr .asm_923dd
.asm_923d3
ld hl, wd002
ld a, [hl]
and a
jr nz, .asm_923dc
ld [hl], FLY_INDIGO + 1
.asm_923dc
dec [hl]
.asm_923dd
ld a, [wd002]
cp KANTO_FLYPOINT
jr c, .johto
call FillKantoMap
xor a
ld b, $9c
jr .asm_923f3
.johto
call FillJohtoMap
ld a, $90
ld b, $98
.asm_923f3
ld [hWY], a
ld a, b
ld [hBGMapAddress + 1], a
call TownMapBubble
call WaitBGMap
xor a
ld [hBGMapMode], a
ret
; 92402

1057
engine/wildmons.asm Executable file

File diff suppressed because it is too large Load Diff