Advertisement
dannye33

debug.asm

Aug 3rd, 2016
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DebugStart:
  2.     xor a
  3.     call SwitchMenu
  4.  
  5. Forever:
  6.     ld a, [wDebugMenuID]
  7.     ld c,a
  8.     add a,a
  9.     add a,c
  10.     ld c,a
  11.     ld b,$00
  12.     ld hl,MenuList
  13.     add hl,bc
  14.     inc hl
  15.     ld e,[hl]
  16.     inc hl
  17.     ld d,[hl]
  18.     inc de
  19.     ld h,d
  20.     ld l,e
  21.     ld bc,Forever
  22.  
  23.     push bc
  24.     ld bc,$0003
  25.     ld a, [hJoyInput]
  26.     and $40
  27.     jp nz,DerefPointer
  28.     add hl,bc
  29.     ld a, [hJoyInput]
  30.     and $80
  31.     jp nz,DerefPointer
  32.     add hl,bc
  33.     ld a, [hJoyInput]
  34.     and $20
  35.     jp nz,DerefPointer
  36.     add hl,bc
  37.     ld a, [hJoyInput]
  38.     and $10
  39.     jp nz,DerefPointer
  40.     add hl,bc
  41.     ld a, [hJoyInput]
  42.     and $02
  43.     jp nz,DerefPointer
  44.     add hl,bc
  45.     ld a, [hJoyInput]
  46.     and $01
  47.     jp nz,DerefPointer
  48.     pop bc
  49.     halt
  50.     jp Forever
  51.  
  52. DerefPointer:
  53.     push af
  54.     ld e,[hl]
  55.     inc hl
  56.     ld d,[hl]
  57.     ld h,d
  58.     ld l,e
  59.     ld bc,DerefRets
  60.     push bc
  61.     jp [hl]
  62.  
  63. DerefRets:
  64.     pop af
  65.     ld b,a
  66.  
  67. DerefRets_L1:
  68.     ld a, [hJoyInput]
  69.     and b
  70.     cp $00
  71.     jp nz,DerefRets_L1
  72.     ret
  73.  
  74. ReturnControlCall:
  75.     pop bc
  76.     pop bc
  77.     pop bc
  78.  
  79. ReturnControl:
  80.     ld a,SFX_SAVE
  81.     call PlaySound
  82.     call WaitForSoundToFinish
  83.     ret
  84.  
  85. BackToMain:
  86.     xor a
  87.     call SwitchMenu
  88.     ret
  89.  
  90. ConfirmSound:
  91.     ld a,SFX_PURCHASE
  92.     call PlaySound
  93.     call WaitForSoundToFinish
  94.     ret
  95.  
  96. DrawTextbox:
  97.     ld a,"┌"
  98.     ld de,$0014
  99.     dec b
  100.     push bc
  101.     push hl
  102.     ld [hli], a
  103.     inc a ; ─
  104.     dec c
  105.     dec c
  106.     call MemSet
  107.     inc a ; ┐
  108.     ld [hli], a
  109.  
  110. DrawTextbox_L1:
  111.     ld a,"│"
  112.     pop hl
  113.     add hl,de
  114.     pop bc
  115.     dec b
  116.     jr z,DrawTextbox_L2
  117.     push bc
  118.     push hl
  119.     ld [hli], a
  120.     dec c
  121.     dec c
  122.     ld a," "
  123.     call MemSet
  124.     ld [hl],"│"
  125.     jr DrawTextbox_L1
  126.  
  127. DrawTextbox_L2:
  128.     ld a,"└"
  129.     ld [hli], a
  130.     ld a,"─"
  131.     dec c
  132.     dec c
  133.     call MemSet
  134.     ld [hl],"┘"
  135.     ret
  136.  
  137. MemSet:
  138.     ld [hli], a
  139.     dec c
  140.     jr nz,MemSet
  141.     ret
  142.  
  143. PutStringMultiline:
  144.     push de
  145.     ld a,[hl]
  146.     cp $0d
  147.     jr nz,PutStringMultiline_L2
  148.     inc hl
  149.     pop de
  150.     coord de, 1, 13
  151.     push de
  152.  
  153. PutStringMultiline_L2:
  154.     call PutChar
  155.     dec hl
  156.     ld a,[hl]
  157.     inc hl
  158.     cp $00
  159.     jr z,PutStringMultiline_R1
  160.     pop de
  161.     ld c,$14
  162.  
  163. PutStringMultiline_L1:
  164.     inc de
  165.     dec c
  166.     jr nz,PutStringMultiline_L1
  167.     push de
  168.     jr PutStringMultiline_L2
  169.  
  170. PutStringMultiline_R1:
  171.     pop de
  172.     ret
  173.  
  174. PutChar:
  175.     ld a, [hli]
  176.     cp $00
  177.     ret z
  178.     cp $0a
  179.     ret z
  180.     ld [de],a
  181.     inc de
  182.     jr PutChar
  183.  
  184. SwitchMenu:
  185.     push af
  186.  
  187. SwitchMenu_L1:
  188.     ld a, [hJoyInput]
  189.     cp $00
  190.     jp nz,SwitchMenu_L1
  191.     pop af
  192.     ld [wDebugMenuID], a
  193.     ld b,$00
  194.     ld c,a
  195.     add a,a
  196.     add a,c
  197.     inc a
  198.     ld c,a
  199.     ld hl,MenuList
  200.     add hl,bc
  201.     ld d,[hl]
  202.     inc hl
  203.     ld e,[hl]
  204.     ld h,e
  205.     ld l,d
  206.     ld c,$13
  207.     add hl,bc
  208.     ld d,[hl]
  209.     inc hl
  210.     ld e,[hl]
  211.     ld h,e
  212.     ld l,d
  213.     push hl
  214.     coord hl, 2, 3
  215.     lb bc,$09,$12
  216.     call DrawTextbox
  217.     pop hl
  218.     ld bc,SwitchMenuBack
  219.     push bc
  220.     jp [hl]
  221.  
  222. SwitchMenuBack:
  223.     ret
  224.  
  225. MenuList:
  226.     ld bc,Menu1Properties
  227.     ld bc,Menu2Properties
  228.     ld bc,Menu3Properties
  229.     ld bc,Menu4Properties
  230.     ld bc,Menu5Properties
  231.     ld bc,Menu6Properties
  232.     ld bc,Menu7Properties
  233.  
  234. Menu1Properties:
  235.     ld bc,MenuCursorUp   ; [UP]
  236.     ld bc,MenuCursorDown ; [DOWN]
  237.     ld bc,SwitchMenuBack ; [LEFT]
  238.     ld bc,SwitchMenuBack ; [RIGHT]
  239.     ld bc,ReturnControlCall  ; [B]
  240.     ld bc,Menu1Perform   ; [A]
  241.     ld bc,Menu1Constructor ; .ctor
  242.     ld bc,Menu1Desc1 ; desc1
  243.     ld bc,Menu1Desc2 ; desc1
  244.     ld bc,Menu1Desc3 ; desc1
  245.     ld bc,Menu1Desc4 ; desc1
  246.     ld bc,Menu1Desc5 ; desc1
  247.     ld bc,Menu1Desc6 ; desc1
  248.     ld bc,Menu1Desc7 ; desc1
  249.  
  250. Menu1Text:
  251.     db "Write memory", $0a
  252.     db "Hex viewer", $0a
  253.     db "Anti-crasher", $0a
  254.     db "MemCorruptor", $0a
  255.     db "Miscellanous", $0a
  256.     db "Address list",$0a
  257.     db "Exit",$00
  258.  
  259. Menu1Desc1:
  260.     db "Write single and",$0a,$0a
  261.     db "multi-byte values",$00
  262.  
  263. Menu1Desc2:
  264.     db "View contents of",$0a,$0a
  265.     db "ROM, RAM, etc.",$00
  266.  
  267. Menu1Desc3:
  268.     db "Hook RST vectors",$0a,$0a
  269.     db "to stop crashes",$00
  270.  
  271. Menu1Desc4:
  272.     db "Corrupt blocks",$0a,$0a
  273.     db "of memory",$00
  274.  
  275. Menu1Desc5:
  276.     db "Perform common",$0a,$0a
  277.     db "tasks and hacks",$00
  278.  
  279. Menu1Desc6:
  280.     db "Most important",$0a,$0a
  281.     db "addresses to know",$00
  282.  
  283. Menu1Desc7:
  284.     db "Quit this menu",$00
  285.  
  286. Menu1Constructor:
  287.     xor a
  288.     ld [wDebugMenuCursorPos], a ; cursor position at 0
  289.     ld hl,Menu1Text
  290.     coord de, 4, 4
  291.     call PutStringMultiline
  292.     call MenuCursorRedraw
  293.     ret
  294.  
  295. Menu1Perform:
  296.     ld a, [wDebugMenuCursorPos]
  297.     cp $06
  298.     jp z,ReturnControlCall
  299.     inc a
  300.     call SwitchMenu
  301.     ret
  302.  
  303. HexCycleTbl:
  304.     db "0123456789ABCDEF"
  305.  
  306. ReadHexExpr:
  307.     ld a,[hl]
  308.     ld c,$00
  309.     ld de,HexCycleTbl
  310.  
  311. ReadHexExpr_L1:
  312.     ld a,[de]
  313.     cp [hl]
  314.     jr z,ReadHexExpr_L2
  315.     inc c
  316.     inc de
  317.     jr ReadHexExpr_L1
  318.  
  319. ReadHexExpr_L2:
  320.     ld a,c
  321.     ret
  322.  
  323. ReadDblHexExpr:
  324.     xor a
  325.     call ReadHexExpr
  326.     swap a
  327.     inc hl
  328.     push af
  329.     call ReadHexExpr
  330.     ld c,a
  331.     pop af
  332.     add a,c
  333.     ret
  334.  
  335. WriteHexExpr:
  336.     push de
  337.     push hl
  338.     ld hl,HexCycleTbl
  339.     ld b,$00
  340.     ld c,a
  341.     add hl,bc
  342.     ld d,h
  343.     ld e,l
  344.     ld a,[hl]
  345.     pop hl
  346.     ld [hli], a
  347.     pop de
  348.     ret
  349.  
  350. WriteDblHexExpr:
  351.     ld b,a
  352.     push bc
  353.     swap a
  354.     and $0f
  355.     call WriteHexExpr
  356.     pop bc
  357.     ld a,b
  358.     and $0f
  359.     call WriteHexExpr
  360.     ret
  361.  
  362. Menu2Properties:
  363.     ld bc,Menu2CycUp   ; [UP]
  364.     ld bc,Menu2CycDown ; [DOWN]
  365.     ld bc,Menu2CurLeft ; [LEFT]
  366.     ld bc,Menu2CurRight ; [RIGHT]
  367.     ld bc,BackToMain ; [B]
  368.     ld bc,Menu2Perform   ; [A]
  369.     ld bc,Menu2Constructor ; .ctor
  370.     ld bc,Menu2Desc1 ; desc1
  371.  
  372. Menu2Constructor:
  373.     xor a
  374.     ld [wDebugMenuCursorPos], a ; cursor position at 0
  375.     inc a
  376.     ld [wDebugMenuParam], a ; length at 1
  377.     call MenuCursorRedraw
  378.     ld hl,Menu2Text
  379.     coord de, 3, 4
  380.     call PutStringMultiline
  381.     ld a,$f6
  382.     ld c,$0f
  383.     coord hl, 3, 7
  384.     call MemSet
  385.     coord hl, 7, 7
  386.     ld [hl],$9c
  387.     ld hl,Menu2Text2
  388.     coord de, 3, 10
  389.     call PutStringMultiline
  390.     jp Menu2Redraw
  391.  
  392. Menu2Text:
  393.     db " -Write memory-", $00
  394.  
  395. Menu2Text2:
  396.     db "Expr. length: 1",$00
  397.  
  398. Menu2Desc1:
  399.     db $0d,"START and A: Len",$0a
  400.     db "D-PAD: Modify",$0a
  401.     db "A Button: OK",$0a
  402.     db "B Button: Cancel",$00
  403.  
  404. Menu2LenCyc:
  405.     ld hl,wDebugMenuParam
  406.     ld a,[hl]
  407.     inc a
  408.     ld [hl],a
  409.     cp $06
  410.     jr nz,Menu2LenCyc_L1
  411.     ld [hl],$01
  412.  
  413. Menu2LenCyc_L1:
  414.     ld a,[hl]
  415.     coord hl, 17, 10
  416.     add a,$f6
  417.     ld [hl],a
  418.     ret
  419.  
  420. Menu2Perform:
  421.     ld a, [hJoyInput]
  422.     and $08
  423.     cp $00
  424.     jr nz,Menu2LenCyc
  425.     coord hl, 3, 7
  426.     call ReadDblHexExpr
  427.     ld d,a
  428.     push de
  429.     inc hl
  430.     call ReadDblHexExpr
  431.     pop de
  432.     ld e,a
  433.     ld a, [wDebugMenuParam]
  434.     ld c,a
  435.     coord hl, 8, 7
  436.  
  437. Menu2Perform_1L:
  438.     push bc
  439.     push de
  440.     call ReadDblHexExpr
  441.     inc hl
  442.     pop de
  443.     ld [de],a
  444.     inc de
  445.     pop bc
  446.     dec c
  447.     jr nz,Menu2Perform_1L
  448.     call ConfirmSound
  449.     jp BackToMain
  450.  
  451. Menu2CurLeft:
  452.     ld hl,wDebugMenuCursorPos
  453.     ld a,[hl]
  454.     cp $00
  455.     ret z
  456.     dec [hl]
  457.     jr Menu2Redraw
  458.  
  459. Menu2CurRight:
  460.     ld hl,wDebugMenuCursorPos
  461.     ld a,[hl]
  462.     cp $0e
  463.     ret z
  464.     inc [hl]
  465.     jr Menu2Redraw
  466.  
  467. Menu2Redraw:
  468.     coord hl, 3, 6
  469.     ld a,$7f
  470.     ld c,$10
  471.     push hl
  472.     call MemSet
  473.     pop hl
  474.     ld a, [wDebugMenuCursorPos]
  475.     add a,l
  476.     ld l,a
  477.     ld [hl],$ee
  478.     ret
  479.  
  480. DrawBottomBox:
  481.     coord hl, 0, 12
  482.     ld bc,$0614
  483.     call DrawTextbox
  484.     ret
  485.  
  486. Menu2CycUp:
  487.     coord hl, 3, 7
  488.     ld a, [wDebugMenuCursorPos]
  489.     add a,l
  490.     ld l,a
  491.     inc [hl]
  492.     ld a,[hl]
  493.     cp $9d
  494.     jr z,MenuCycRestore
  495.     cp $00
  496.     jr z,Menu2CycUp_L1
  497.     cp $86
  498.     ret nz
  499.     ld [hl],$f6
  500.     ret
  501.  
  502. Menu2CycUp_L1:
  503.     ld [hl],$80
  504.     ret
  505.  
  506. MenuCycRestore:
  507.     ld [hl],$9c
  508.     ret
  509.  
  510. Menu2CycDown:
  511.     coord hl, 3, 7
  512.     ld a, [wDebugMenuCursorPos]
  513.     add a,l
  514.     ld l,a
  515.     dec [hl]
  516.     ld a,[hl]
  517.     cp $9b
  518.     jr z,MenuCycRestore
  519.     cp $f5
  520.     jr z,Menu2CycDown_L1
  521.     cp $7f
  522.     ret nz
  523.     ld [hl],$ff
  524.     ret
  525.  
  526. Menu2CycDown_L1:
  527.     ld [hl],$85
  528.     ret
  529.  
  530. Menu3Properties:
  531.     ld bc,Menu3Up   ; [UP]
  532.     ld bc,Menu3Down ; [DOWN]
  533.     ld bc,Menu3Left ; [LEFT]
  534.     ld bc,Menu3Right ; [RIGHT]
  535.     ld bc,BackToMain ; [B]
  536.     ld bc,Menu3AutoRefresh   ; [A]
  537.     ld bc,Menu3Constructor ; .ctor
  538.     ld bc,Menu3Desc1 ; desc1
  539.  
  540. Menu3Constructor:
  541.     xor a
  542.     ld [wDebugMenuCursorPos], a ; starting address hi byte
  543.     ld [wDebugMenuParam], a ; starting address lo byte
  544.     call MenuCursorRedraw
  545.     coord hl, 3, 4
  546.     ld [hl],$7f
  547.     jr Menu3Redraw
  548.  
  549. Menu3Desc1:
  550.     db $0d,"UP/DOWN: Move 100"
  551.     db $0a,"LEFT/RIGHT: Mov.10"
  552.     db $0a,"Hold A: Autoupdate"
  553.     db $0a,"B Button: Cancel",$00
  554.  
  555. Menu3Redraw:
  556.     coord hl, 3, 4
  557.     ld c,$07
  558.     ld a, [wDebugMenuCursorPos]
  559.     ld d,a
  560.     ld a, [wDebugMenuParam]
  561.     ld e,a
  562.  
  563. Menu3Redraw_L1:
  564.     push bc
  565.     push hl
  566.     ld a,d
  567.     call WriteDblHexExpr
  568.     ld a,e
  569.     call WriteDblHexExpr
  570.     ld [hl],$9c
  571.     inc hl
  572.     ld a,[de]
  573.     call WriteDblHexExpr
  574.     inc de
  575.     ld [hl],$7f
  576.     inc hl
  577.     ld a,[de]
  578.     call WriteDblHexExpr
  579.     inc de
  580.     ld [hl],$7f
  581.     inc hl
  582.     ld a,[de]
  583.     call WriteDblHexExpr
  584.     inc de
  585.     ld [hl],$7f
  586.     inc hl
  587.     ld a,[de]
  588.     call WriteDblHexExpr
  589.     inc de
  590.     pop hl
  591.     ld bc,$0014
  592.     add hl,bc
  593.     pop bc
  594.     dec c
  595.     jr nz,Menu3Redraw_L1
  596.     ret
  597.  
  598. Menu3Up:
  599.     ld hl,wDebugMenuCursorPos
  600.     ld a, [hJoyInput]
  601.     and $08
  602.     jr z,Menu3Up_L1
  603.     ld a,[hl]
  604.     sub $0f
  605.     ld [hl],a
  606.  
  607. Menu3Up_L1:
  608.     dec [hl]
  609.     jp Menu3Redraw
  610.  
  611. Menu3Down:
  612.     ld hl,wDebugMenuCursorPos
  613.     ld a, [hJoyInput]
  614.     and $08
  615.     jr z,Menu3Down_L1
  616.     ld a,[hl]
  617.     add a, $0f
  618.     ld [hl],a
  619.  
  620. Menu3Down_L1:
  621.     inc [hl]
  622.     jp Menu3Redraw
  623.  
  624. Menu3Left:
  625.     ld hl,wDebugMenuParam
  626.     ld a,[hl]
  627.     cp $00
  628.     jr nz,Menu3HiDecRet
  629.     dec hl
  630.     dec [hl]
  631.     inc hl
  632.  
  633. Menu3HiDecRet:
  634.     sub $10
  635.     ld [hl],a
  636.     jp Menu3Redraw
  637.  
  638. Menu3Right:
  639.     ld hl,wDebugMenuParam
  640.     ld a,[hl]
  641.     cp $f0
  642.     jr nz,Menu3HiIncRet
  643.     dec hl
  644.     inc [hl]
  645.     inc hl
  646.  
  647. Menu3HiIncRet:
  648.     add a,$10
  649.     ld [hl],a
  650.     jp Menu3Redraw
  651.  
  652. Menu3AutoRefresh:
  653.     pop hl
  654.     pop de
  655.     ld de,$0000 ;this will disable debounce checking, since
  656.     push de ;every x and 0 equals 0
  657.     pop hl
  658.     jp Menu3Redraw
  659.  
  660. Menu4Properties:
  661.     ld bc,MenuCursorUp   ; [UP]
  662.     ld bc,MenuCursorDown ; [DOWN]
  663.     ld bc,SwitchMenuBack ; [LEFT]
  664.     ld bc,SwitchMenuBack ; [RIGHT]
  665.     ld bc,BackToMain ; [B]
  666.     ld bc,Menu4Perform   ; [A]
  667.     ld bc,Menu4Constructor ; .ctor
  668.     ld bc,Menu4Desc1 ; desc1
  669.     ld bc,Menu4Desc2 ; desc2
  670.     ld bc,Menu4Desc3 ; desc3
  671.     ld bc,Menu4Desc3 ; desc4
  672.     ld bc,Menu4Desc4 ; desc5
  673.  
  674. Menu4Constructor:
  675.     xor a
  676.     ld [wDebugMenuCursorPos], a ; ld (wDebugMenuCursorPos),a ; cursor position at 0
  677.     call MenuCursorRedraw
  678.     ld hl,Menu4Text
  679.     coord de, 4, 4
  680.     call PutStringMultiline
  681.     ret
  682.  
  683. Menu4Desc1:
  684.     db "Turn off RST",$0a,$0a
  685.     db "crash prevention",$00
  686.  
  687. Menu4Desc2:
  688.     db $0d,"Fixes the RST",$0a
  689.     db "vectors with an",$0a
  690.     db "absolute jump",$0a
  691.     db "instruction.",$00
  692.  
  693. Menu4Desc3:
  694.     db $0d,"Fixes the RST",$0a
  695.     db "vectors using",$0a
  696.     db "return instru-",$0a
  697.     db "ctions.",$00
  698.  
  699. Menu4Desc4:
  700.     db $0d,"Fixes the RST",$0a
  701.     db "vectors through",$0a
  702.     db "stack manipula-",$0a
  703.     db "tions.",$00
  704.  
  705. Menu4Text:
  706.     db "Turn off",$0a
  707.     db "Jump fix",$0a
  708.     db "Return fix",$0a
  709.     db "Dbl-return fix",$0a
  710.     db "Stack fix",$00
  711.  
  712. Menu4FixList:
  713.     db $00,$00,$00,$00
  714.     db $c1,$c3,$b9,$01
  715.     db $c9,$de,$ad,$00
  716.     db $e1,$e1,$e1,$e9
  717.     db $e1,$e1,$e9,$00
  718.  
  719. Menu4Perform:
  720.     ld a, [wDebugMenuCursorPos] ; load cursor position
  721.     add a,a
  722.     add a,a ; multiply 4 times
  723.     ld b,$00
  724.     ld c,a
  725.     ld hl,Menu4FixList
  726.     add hl,bc
  727.     ld de,$ffa6 ; hDivideBCDBuffer + 1
  728.     ld c,$04
  729.  
  730. Menu4Perform_L1:
  731.     ld a, [hli]
  732.     ld [de],a
  733.     inc de
  734.     dec c
  735.     jr nz,Menu4Perform_L1
  736.     call ConfirmSound
  737.     jp BackToMain
  738.  
  739. Menu5Properties:
  740.     ld bc,Menu5CycUp   ; [UP]
  741.     ld bc,Menu5CycDown ; [DOWN]
  742.     ld bc,Menu5CurLeft ; [LEFT]
  743.     ld bc,Menu5CurRight ; [RIGHT]
  744.     ld bc,BackToMain ; [B]
  745.     ld bc,Menu5Perform   ; [A]
  746.     ld bc,Menu5Constructor ; .ctor
  747.     ld bc,Menu5Desc1 ; desc1
  748.  
  749. Menu5Constructor:
  750.     xor a
  751.     ld [wDebugMenuCursorPos], a ; cursor position at 0
  752.     call MenuCursorRedraw
  753.     ld hl,Menu5Text
  754.     coord de, 3, 4
  755.     call PutStringMultiline
  756.     ld a,$f6
  757.     ld c,$09
  758.     coord hl, 6, 9
  759.     call MemSet
  760.     coord hl, 10, 9
  761.     ld [hl],$e3
  762.     jp Menu5Redraw
  763.  
  764. Menu5Desc1:
  765.     db $0d,"D-PAD: Modify",$0a
  766.     db "A Button: Corrupt",$0a
  767.     db "B Button: Cancel",$0a
  768.     db "[select RAM only]",$00
  769.  
  770. Menu5Text:
  771.     db " -MemCorruptor-",$0a
  772.     db "Hover over the",$0a
  773.     db "dash and hold A",$0a
  774.     db "to fuzz randomly",$00
  775.  
  776. Menu5CycUp:
  777.     coord hl, 6, 9
  778.     ld a, [wDebugMenuCursorPos]
  779.     add a,l
  780.     ld l,a
  781.     inc [hl]
  782.     ld a,[hl]
  783.     cp $e4
  784.     jr z,Menu5CycRestore
  785.     cp $00
  786.     jr z,Menu5CycUp_L1
  787.     cp $86
  788.     ret nz
  789.     ld [hl],$f6
  790.     ret
  791.  
  792. Menu5CycUp_L1:
  793.     ld [hl],$80
  794.     ret
  795.  
  796. Menu5CycRestore:
  797.     ld [hl],$e3
  798.     ret
  799.  
  800. Menu5CycDown:
  801.     coord hl, 6, 9
  802.     ld a, [wDebugMenuCursorPos]
  803.     add a,l
  804.     ld l,a
  805.     dec [hl]
  806.     ld a,[hl]
  807.     cp $e2
  808.     jr z,Menu5CycRestore
  809.     cp $f5
  810.     jr z,Menu5CycDown_L1
  811.     cp $7f
  812.     ret nz
  813.     ld [hl],$ff
  814.     ret
  815.  
  816. Menu5CycDown_L1:
  817.     ld [hl],$85
  818.     ret
  819.  
  820. Menu5CurLeft:
  821.     ld hl,wDebugMenuCursorPos
  822.     ld a,[hl]
  823.     cp $00
  824.     ret z
  825.     dec [hl]
  826.     jr Menu5Redraw
  827.  
  828. Menu5CurRight:
  829.     ld hl,wDebugMenuCursorPos
  830.     ld a,[hl]
  831.     cp $08
  832.     ret z
  833.     inc [hl]
  834.  
  835. Menu5Redraw:
  836.     coord hl, 6, 8
  837.     ld a,$7f
  838.     ld c,$9
  839.     push hl
  840.     call MemSet
  841.     pop hl
  842.     ld a, [wDebugMenuCursorPos]
  843.     add a,l
  844.     ld l,a
  845.     ld [hl],$ee
  846.     ret
  847.  
  848. Menu5RandomFuzz:
  849.     pop hl
  850.     pop de
  851.     ld de,$0000 ;this will disable debounce checking, since
  852.     push de ;every x and 0 equals 0
  853.     pop hl
  854.     call Random
  855.     ld l,a
  856.     call Random
  857.     and $1f
  858.     add a,$c0
  859.     ld h,a
  860.     call Random
  861.     ld [hl],a
  862.     coord hl, 10, 8
  863.     ld a,[hl]
  864.     cp $7f
  865.     jr z,Menu5RandomFuzz_L1
  866.     ld [hl],$7f
  867.     ret
  868.  
  869. Menu5RandomFuzz_L1:
  870.     ld [hl],$ee
  871.     ret
  872.  
  873. Menu5Perform:
  874.     ld a, [wDebugMenuCursorPos]
  875.     cp $04
  876.     jr z,Menu5RandomFuzz
  877.     coord hl, 6, 9
  878.     call ReadDblHexExpr
  879.     ld d,a
  880.     push de
  881.     inc hl
  882.     call ReadDblHexExpr
  883.     pop de
  884.     ld e,a
  885.     inc hl
  886.     inc hl
  887.     push de
  888.     call ReadDblHexExpr
  889.     ld d,a
  890.     push de
  891.     inc hl
  892.     call ReadDblHexExpr
  893.     pop de
  894.     ld e,a
  895.     pop hl
  896.     inc de
  897.  
  898. Menu5Perform_L1:
  899.     call Random
  900.     ld [hli], a
  901.     ld a,h
  902.     cp d
  903.     jr nz,Menu5Perform_L1
  904.     ld a,l
  905.     cp e
  906.     jr nz,Menu5Perform_L1
  907.     call ConfirmSound
  908.     jp BackToMain
  909.  
  910. Menu6Properties:
  911.     ld bc,Menu6CursorUp   ; [UP]
  912.     ld bc,Menu6CursorDown ; [DOWN]
  913.     ld bc,Menu6ParamL ; [LEFT]
  914.     ld bc,Menu6ParamR ; [RIGHT]
  915.     ld bc,BackToMain ; [B]
  916.     ld bc,Menu6Perform   ; [A]
  917.     ld bc,Menu6Constructor ; .ctor
  918.     ld bc,Menu6Desc1 ; desc1
  919.     ld bc,Menu6Desc1 ; desc2
  920.     ld bc,Menu6Desc1 ; desc3
  921.     ld bc,Menu6Desc1 ; desc4
  922.     ld bc,Menu6Desc1 ; desc5
  923.     ld bc,Menu6Desc1 ; desc6
  924.     ld bc,Menu6Desc1 ; desc7
  925.  
  926. Menu6Constructor:
  927.     xor a
  928.     ld [wDebugMenuCursorPos], a ; cursor position at 0
  929.     ld [wDebugMenuParam], a ; param at 0
  930.     call MenuCursorRedraw
  931.     ld hl,Menu6Text
  932.     coord de, 4, 4
  933.     call PutStringMultiline
  934.     jp Menu6Redraw
  935.  
  936. Menu6Desc1:
  937.     db $0d,"L/R: Mod.param",$0a
  938.     db "A Button: Accept",$0a
  939.     db "B Button: Cancel",$0a
  940.     db "Parameter:",$00
  941.  
  942. Menu6Text:
  943.     db "Give ()",$0a
  944.     db "Give item",$0a
  945.     db "Clear () box",$0a
  946.     db "All fly locs.",$0a
  947.     db "Predef [7 heal]",$0a
  948.     db "Max money",$0a
  949.     db "Display area TX",$00
  950.  
  951. Menu6Redraw:
  952.     ld a, [wDebugMenuParam]
  953.     coord hl, 12, 16
  954.     call WriteDblHexExpr
  955.     ret
  956.  
  957. Menu6ParamL:
  958.     ld hl,wDebugMenuParam
  959.     ld a,[hl]
  960.     add a,$10
  961.     ld [hl],a
  962.     jr Menu6Redraw
  963.  
  964. Menu6ParamR:
  965.     ld hl,wDebugMenuParam
  966.     inc [hl]
  967.     jr Menu6Redraw
  968.  
  969. Menu6CursorUp:
  970.     ld bc,Menu6Redraw
  971.     push bc
  972.     jp MenuCursorUp
  973.  
  974. Menu6CursorDown:
  975.     ld bc,Menu6Redraw
  976.     push bc
  977.     jp MenuCursorDown
  978.  
  979. Menu6Cursor0:
  980.     ld c,$05
  981.     call GivePokemon
  982.     jr Menu6Finish
  983.  
  984. Menu6Cursor1:
  985.     ld c,$01
  986.     call GiveItem
  987.     jr Menu6Finish
  988.  
  989. Menu6Cursor2:
  990.     xor a
  991.     ld [wNumInBox], a ; da7f=0
  992.     jr Menu6Finish
  993.  
  994. Menu6Perform:
  995.     ld a, [wDebugMenuParam] ; load param
  996.     ld b,a
  997.     ld a, [wDebugMenuCursorPos] ; load cursor position
  998.     cp $00
  999.     jr z,Menu6Cursor0
  1000.     cp $01
  1001.     jr z,Menu6Cursor1
  1002.     cp $02
  1003.     jr z,Menu6Cursor2
  1004.     cp $03
  1005.     jr z,Menu6Cursor3
  1006.     cp $04
  1007.     jr z,Menu6Cursor4
  1008.     cp $05
  1009.     jr z,Menu6Cursor5
  1010.     jr Menu6Cursor6
  1011.  
  1012. Menu6Finish:
  1013.     call ConfirmSound
  1014.     jp BackToMain
  1015.  
  1016. Menu6Cursor3:
  1017.     xor a
  1018.     dec a
  1019.     ld hl,wTownVisitedFlag
  1020.     ld [hli], a
  1021.     ld [hl],a
  1022.     jr Menu6Finish
  1023.  
  1024. Menu6Cursor4:
  1025.     ld a,b
  1026.     call Predef
  1027.     jr Menu6Finish
  1028.  
  1029. Menu6Cursor5:
  1030.     ld hl,wPlayerMoney
  1031.     ld a,$99
  1032.     ld [hli], a
  1033.     ld [hli], a
  1034.     ld [hli], a
  1035.     jr Menu6Finish
  1036.  
  1037. Menu6Cursor6:
  1038.     ld a,b
  1039.     ld [hSpriteIndexOrTextID], a
  1040.     call DisplayTextID
  1041.     pop bc
  1042.     jp ReturnControlCall
  1043.  
  1044. Menu7Properties:
  1045.     ld bc,SwitchMenuBack   ; [UP]
  1046.     ld bc,SwitchMenuBack ; [DOWN]
  1047.     ld bc,Menu7TurnL ; [LEFT]
  1048.     ld bc,Menu7TurnR ; [RIGHT]
  1049.     ld bc,BackToMain ; [B]
  1050.     ld bc,SwitchMenuBack   ; [A]
  1051.     ld bc,Menu7Constructor ; .ctor
  1052.     ld bc,Menu7Desc1 ; desc1
  1053.  
  1054. Menu7Constructor:
  1055.     xor a
  1056.     ld [wDebugMenuCursorPos], a ; page at 0
  1057.     call MenuCursorRedraw
  1058.     ld hl,Menu7Text1
  1059.     coord de, 3, 4
  1060.     call PutStringMultiline
  1061.     ret
  1062.  
  1063. Menu7Desc1:
  1064.     db "Left/Right - page",$0a,$0a
  1065.     db "B Button: Cancel",$00
  1066.  
  1067. Menu7Texts:
  1068.     ld bc,Menu7Text1
  1069.     ld bc,Menu7Text2
  1070.     ld bc,Menu7Text3
  1071.     ld bc,Menu7Text4
  1072.     ;   ----------------
  1073.  
  1074. Menu7Text1:
  1075.     db "C000: Sound I/O ",$0a
  1076.     db "C100: SpriteData",$0a
  1077.     db "CC28: Menu keys ",$0a
  1078.     db "CFC6: Battle nfo",$0a
  1079.     db "CF7A: Mart items",$0a
  1080.     db "D058: Encounter ",$0a
  1081.     db "D162: Party ()  ",$00
  1082.  
  1083. Menu7Text2:
  1084.     db "D31C: Item count",$0a
  1085.     db "D356: Cur badges",$0a
  1086.     db "D361: X/Y coords",$0a
  1087.     db "D36E: Map script",$0a
  1088.     db "D53A: Items box ",$0a
  1089.     db "D888: Wild data ",$0a
  1090.     db "DA80: () in box ",$00
  1091.  
  1092. Menu7Text3:
  1093.     db "1st () settings:",$0a
  1094.     db "D18B: Level     ",$0a
  1095.     db "D172: Moveset   ",$0a
  1096.     db "D188: PP        ",$0a
  1097.     db "D18F: Stats     ",$0a
  1098.     db "----------------",$0a
  1099.     db "D5AB: Evt flags ",$00
  1100.  
  1101. Menu7Text4:
  1102.     db "C3A0: ScreenData",$0a
  1103.     db "CD80: Screen buf",$0a
  1104.     db "CF4B: Last name ",$0a
  1105.     db "D05C: Team ID   ",$0a
  1106.     db "D12B: Textbox ID",$0a
  1107.     db "D157: PlayerName",$0a
  1108.     db "D349: Rival name",$00
  1109.  
  1110. Menu7TurnL:
  1111.     ld hl,wDebugMenuCursorPos
  1112.     ld a,[hl]
  1113.     cp $00
  1114.     ret z
  1115.     dec [hl]
  1116.     jr Menu7Redraw
  1117.  
  1118. Menu7TurnR:
  1119.     ld hl,wDebugMenuCursorPos
  1120.     ld a,[hl]
  1121.     cp $03
  1122.     ret z
  1123.     inc [hl]
  1124.     jr Menu7Redraw
  1125.  
  1126. Menu7Redraw:
  1127.     ld a,[hl]
  1128.     ld hl,Menu7Texts
  1129.     ld e,a
  1130.     add a,a
  1131.     add a,e
  1132.     inc a
  1133.     ld c,a
  1134.     ld b,$00
  1135.     add hl,bc
  1136.     ld a,[hl]
  1137.     ld e,a
  1138.     inc hl
  1139.     ld a,[hl]
  1140.     ld h,a
  1141.     ld l,e
  1142.     coord de, 3, 4
  1143.     jp PutStringMultiline
  1144.  
  1145. MenuCursorUp:
  1146.     ld hl,wDebugMenuCursorPos
  1147.     ld a,[hl]
  1148.     cp $00
  1149.     ret z
  1150.     dec [hl]
  1151.     call MenuCursorRedraw
  1152.     ret
  1153.  
  1154. MenuCursorDown:
  1155.     ld hl,wDebugMenuCursorPos
  1156.     ld a, [wDebugMenuID]
  1157.     swap a
  1158.     xor [hl]
  1159.     cp $06
  1160.     ret z
  1161.     cp $34
  1162.     ret z
  1163.     cp $56
  1164.     ret z
  1165.     inc [hl]
  1166.     call MenuCursorRedraw
  1167.     ret
  1168.  
  1169. MenuCursorRedraw:
  1170.     call DrawBottomBox
  1171.     coord hl, 3, 4
  1172.     ld d,h
  1173.     ld e,l
  1174.     push hl
  1175.     ld bc,$0014
  1176.     push bc
  1177.     ld hl,MenuCursorRedrawStr
  1178.     call PutStringMultiline
  1179.     pop bc
  1180.     pop hl
  1181.     ld a, [wDebugMenuCursorPos]
  1182.     push af
  1183.  
  1184. MenuCursorRedraw_L1:
  1185.     cp $00
  1186.     jr z,MenuCursorRedraw_L2
  1187.     add hl,bc
  1188.     dec a
  1189.     jr nz,MenuCursorRedraw_L1
  1190.  
  1191. MenuCursorRedraw_L2:
  1192.     ld [hl],$ed
  1193.     ld a, [wDebugMenuID]
  1194.     ld c,a
  1195.     add a,a
  1196.     add a,c
  1197.     ld c,a
  1198.     ld b,$00
  1199.     ld hl,MenuList
  1200.     add hl,bc
  1201.     inc hl
  1202.     ld e,[hl]
  1203.     inc hl
  1204.     ld d,[hl]
  1205.     ld h,d
  1206.     ld l,e
  1207.     ld bc,$0016
  1208.     pop af
  1209.     ld d,a
  1210.     add a,a
  1211.     add a,d
  1212.     add a,c
  1213.     ld c,a
  1214.     add hl,bc
  1215.     ld e,[hl]
  1216.     inc hl
  1217.     ld d,[hl]
  1218.     ld h,d
  1219.     ld l,e
  1220.     coord de, 1, 14
  1221.     call PutStringMultiline
  1222.     ret
  1223.  
  1224. MenuCursorRedrawStr:
  1225.     db $7f,$0a,$7f,$0a,$7f,$0a,$7f,$0a,$7f,$0a,$7f,$0a,$7f,$00
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement