aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAsh Ketchum <no-reply@sl0p.foo>2026-07-15 16:30:21 +0200
committerAsh Ketchum <no-reply@sl0p.foo>2026-07-15 16:30:21 +0200
commitb6ed7736b92e9772626e6c457b2cb28c9d63411c (patch)
treeae5d5a29aba79ffdc8fe1dbf1ab02de3ea6a1da3
parentdocs: custom SL0P EDITION README with screenshots (diff)
downloadpokeyellow-b6ed7736b92e9772626e6c457b2cb28c9d63411c.tar.gz
pokeyellow-b6ed7736b92e9772626e6c457b2cb28c9d63411c.tar.xz
pokeyellow-b6ed7736b92e9772626e6c457b2cb28c9d63411c.zip
SL0P menu: confirmation feedback for single-shot cheats
The instant cheats (MONEY/HEAL/COINS/BADGES/DEX/MAXTEAM/TEACH/HMS/REPEL, NOWILD, and ITEMS-give) dropped you straight back to the menu with no sign anything happened. Add SlopConfirm: play the item jingle and flash a centred message box for ~0.8s before returning. NOWILD reports WILD MONS ON/OFF to match the new state.
-rw-r--r--engine/slop_menu.asm79
1 files changed, 62 insertions, 17 deletions
diff --git a/engine/slop_menu.asm b/engine/slop_menu.asm
index 4c93e2ed..5d14cfb1 100644
--- a/engine/slop_menu.asm
+++ b/engine/slop_menu.asm
@@ -1094,6 +1094,8 @@ GiveItemSubmenu:
ld b, [hl]
ld c, 99
call GiveItem
+ ld de, SlopMsgItem
+ jp SlopConfirm
.back
and a
ret
@@ -1157,8 +1159,8 @@ SlopHealParty:
dec c
jr nz, .loop
.done
- and a
- ret
+ ld de, SlopMsgHeal
+ jp SlopConfirm
; TEACH: give every party member an OP coverage moveset + PP
; (Hyper Beam / Earthquake / Ice Beam / Thunderbolt)
@@ -1198,8 +1200,8 @@ SlopTeach:
dec c
jr nz, .loop
.done
- and a
- ret
+ ld de, SlopMsgTeach
+ jp SlopConfirm
; HMS: give all five HMs (Cut/Fly/Surf/Strength/Flash)
SlopGiveHMs:
@@ -1213,8 +1215,8 @@ SlopGiveHMs:
ld a, b
cp HM_FLASH + 1
jr nz, .loop
- and a
- ret
+ ld de, SlopMsgHMs
+ jp SlopConfirm
; MONEY: 999999 (BCD)
SlopMaxCash:
@@ -1222,16 +1224,16 @@ SlopMaxCash:
ld [wPlayerMoney], a
ld [wPlayerMoney + 1], a
ld [wPlayerMoney + 2], a
- and a
- ret
+ ld de, SlopMsgMoney
+ jp SlopConfirm
; COINS: 9999 game-corner coins (BCD)
SlopMaxCoins:
ld a, $99
ld [wPlayerCoins], a
ld [wPlayerCoins + 1], a
- and a
- ret
+ ld de, SlopMsgCoins
+ jp SlopConfirm
; NOWILD toggle: no wild encounters (hooked in TryDoWildEncounter)
SlopToggleNoWild:
@@ -1239,21 +1241,26 @@ SlopToggleNoWild:
xor $01
ld [wUnusedFlag], a
and a
- ret
+ jr z, .wildOn ; flag off -> wild encounters back ON
+ ld de, SlopMsgWildOff ; flag on -> wild encounters OFF
+ jp SlopConfirm
+.wildOn
+ ld de, SlopMsgWildOn
+ jp SlopConfirm
; REPEL: refill repel steps
SlopRepel:
ld a, 255
ld [wRepelRemainingSteps], a
- and a
- ret
+ ld de, SlopMsgRepel
+ jp SlopConfirm
; BADGES: all 8
SlopAllBadges:
ld a, $ff
ld [wObtainedBadges], a
- and a
- ret
+ ld de, SlopMsgBadges
+ jp SlopConfirm
; DEX: mark every Pokemon owned + seen (19-byte flag arrays; last byte = 7 bits)
SlopDex:
@@ -1261,8 +1268,8 @@ SlopDex:
call .fill
ld hl, wPokedexSeen
call .fill
- and a
- ret
+ ld de, SlopMsgDex
+ jp SlopConfirm
.fill
ld c, 18
.floop
@@ -1330,5 +1337,43 @@ SlopMaxTeam:
dec c
jr nz, .loop
.done
+ ld de, SlopMsgTeam
+ jp SlopConfirm
+
+; ===========================================================================
+; Single-shot feedback: a one-shot cheat plays the item jingle and flashes a
+; centred message box for a beat, so you can tell it actually did something.
+; de = @-terminated message. Returns carry clear -> the dispatcher redraws menu.
+; ===========================================================================
+SlopConfirm:
+ push de
+ ld a, SFX_GET_ITEM_1
+ call PlaySound
+ call ClearScreen
+ hlcoord 1, 7
+ lb bc, 2, 16
+ call TextBoxBorder
+ hlcoord 3, 8
+ pop de
+ call PlaceString
+ call SlopMenuShow
+ ld c, 48
+.wait
+ call DelayFrame
+ dec c
+ jr nz, .wait
and a
ret
+
+SlopMsgHeal: db "PARTY HEALED!@"
+SlopMsgMoney: db "MONEY MAXED!@"
+SlopMsgCoins: db "COINS MAXED!@"
+SlopMsgBadges: db "ALL 8 BADGES!@"
+SlopMsgDex: db "DEX COMPLETE!@"
+SlopMsgTeam: db "TEAM MAXED!@"
+SlopMsgTeach: db "MOVES TAUGHT!@"
+SlopMsgHMs: db "GOT ALL HMS!@"
+SlopMsgRepel: db "REPEL FILLED!@"
+SlopMsgItem: db "GOT 99 ITEMS!@"
+SlopMsgWildOff: db "WILD MONS OFF@"
+SlopMsgWildOn: db "WILD MONS ON@"