Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions build_presets.bat
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

echo Building Combined Preset Data
cd src\presets
if exist combined_preset_names.asm del combined_preset_names.asm
if exist combined_map_preset_data.asm del combined_map_preset_data.asm
if exist combined_preset_data.asm del combined_preset_data.asm
python combine_preset_names.py
python combine_map_preset_data.py
python combine_preset_data.py
cd ..\..
Expand Down
2 changes: 2 additions & 0 deletions build_presets.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

echo "Building Combined Preset Data"
cd src/presets
rm -f combined_preset_names.asm
rm -f combined_map_preset_data.asm
rm -f combined_preset_data.asm
python3 combine_preset_names.py
python3 combine_map_preset_data.py
python3 combine_preset_data.py
cd ../..
Expand Down
5 changes: 4 additions & 1 deletion src/defines.asm
Original file line number Diff line number Diff line change
Expand Up @@ -917,6 +917,7 @@
!ELEVATOR_STATUS = $0E18
!HEALTH_BOMB_FLAG = $0E1A
!ENEMY_BG2_VRAM_TRANSFER_FLAG = $0E1E
!ENEMY_MAIN_LOOP_COUNTER = $0E44
!ENEMY_KILLS_COUNTER = $0E50
!ENEMY_KILLS_UNLOCK = $0E52
!ENEMY_INDEX = $0E54
Expand Down Expand Up @@ -1129,7 +1130,8 @@ if !FEATURE_TINYSTATES
!SRAM_SAVED_STATE = $737F02
!SRAM_SAVED_RNG = $737F80
!SRAM_SAVED_FRAME_COUNTER = $737F82
!SRAM_TINYSTATE_ROOM = $737F84
!SRAM_SAVED_ENEMY_COUNTER = $737F84
!SRAM_TINYSTATE_ROOM = $737F86
!SRAM_SEG_TIMER_F = $737F88
!SRAM_SEG_TIMER_S = $737F8A
!SRAM_SEG_TIMER_M = $737F8C
Expand All @@ -1139,6 +1141,7 @@ else
!SRAM_DMA_BANK = $770000
!SRAM_SAVED_RNG = $770080
!SRAM_SAVED_FRAME_COUNTER = $770082
!SRAM_SAVED_ENEMY_COUNTER = $770084
!SRAM_SAVED_SP = $774004
!SRAM_SAVED_STATE = $774006
!SRAM_SAVED_MINIMAP = $774008
Expand Down
76 changes: 56 additions & 20 deletions src/infohudmodes.asm
Original file line number Diff line number Diff line change
Expand Up @@ -611,12 +611,12 @@ status_spikesuit:

; Handle jump with springball depending on state
LDA !ram_roomstrat_state : BEQ .nojumpnoup
CMP #$0002 : BEQ .checkspark : CMP #$0004 : BEQ .checkspark
CMP #$0002 : BEQ .checkspark : CMP #$0004 : BEQ .checkslope
BRA .donewait

.checksparkunmorph
LDA !ram_roomstrat_state : CMP #$0006 : BEQ .donewait
CMP #$0002 : BEQ .checkspark : CMP #$0004 : BEQ .checkspark
LDA !ram_roomstrat_state : CMP #$0003 : BEQ .donewait
CMP #$0002 : BEQ .checkspark : CMP #$0004 : BEQ .checkslope
JMP .checkunmorph

.nojump
Expand All @@ -627,11 +627,13 @@ status_spikesuit:

.nojumpnoup
; Arbitrary reset counter after 20 frames
LDA !ram_roomstrat_counter : BEQ .done : CMP #$0014 : BPL .resetstate
LDA !ram_roomstrat_counter : BEQ .checkfirstdamage : CMP #$0014 : BPL .resetstate
INC : STA !ram_roomstrat_counter

; If counter running when we first take damage, then we unmorphed early
LDA !SAMUS_IFRAME_TIMER : CMP #$003C : BEQ .unmorphearly
.checkfirstdamage
LDA !SAMUS_IFRAME_TIMER : CMP #$0060 : BEQ .firstdamage
CMP #$003C : BEQ .unmorphearly

.done
RTS
Expand All @@ -643,41 +645,75 @@ status_spikesuit:

.resetstate
TDC : STA !ram_roomstrat_state : STA !ram_roomstrat_counter
RTS
BRA .checkfirstdamage

.sparkframeperfect
LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$8C : STA !HUD_TILEMAP+$8E
BRA .endstate

.checkspark
LDA !SAMUS_IFRAME_TIMER : CMP #$0033 : BEQ .sparkframeperfect : BPL .sparkearly
JMP .sparklate

; Sparked late
LDA !IH_LETTER_L : STA !HUD_TILEMAP+$8C
LDA #$0033 : SEC : SBC !SAMUS_IFRAME_TIMER
ASL : TAY : LDA.w NumberGFXTable,Y : STA !HUD_TILEMAP+$8E
BRA .endstate
.checkslope
LDA !SAMUS_IFRAME_TIMER : CMP #$005F : BEQ .slopelategood
JMP .slopelate

.firstdamage
LDA !IH_BLANK : STA !HUD_TILEMAP+$88 : STA !HUD_TILEMAP+$8A
STA !HUD_TILEMAP+$8C : STA !HUD_TILEMAP+$8E : STA !HUD_TILEMAP+$90
LDA #$0004 : STA !ram_roomstrat_state
RTS

.unmorphearly
LDA !ram_roomstrat_counter : BEQ .done
LDA !IH_LETTER_E : STA !HUD_TILEMAP+$88
LDA !IH_BLANK : STA !HUD_TILEMAP+$8A : STA !HUD_TILEMAP+$8C : STA !HUD_TILEMAP+$8E : STA !HUD_TILEMAP+$90
LDA !IH_BLANK : STA !HUD_TILEMAP+$8A : STA !HUD_TILEMAP+$8C
STA !HUD_TILEMAP+$8E : STA !HUD_TILEMAP+$90
LDA #$0002 : STA !ram_roomstrat_state
RTS

.sparkframeperfect
LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$8C : STA !HUD_TILEMAP+$8E
BRA .endstate

.sparkearly
LDA !IH_LETTER_E : STA !HUD_TILEMAP+$8C
LDA !SAMUS_IFRAME_TIMER : SEC : SBC #$0033
ASL : TAY : LDA.w NumberGFXTable,Y : STA !HUD_TILEMAP+$8E

; If more than one frame early, keep checking for updates
CPY #$0002 : BNE .done
CPY #$0002 : BNE .enddone

.endstate
LDA #$0006 : STA !ram_roomstrat_state
LDA #$0003 : STA !ram_roomstrat_state

.enddone
RTS

.slopelategood
LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$8C
LDA !IH_LETTER_L : STA !HUD_TILEMAP+$8E
BRA .endstate

.slopeearly
; If we took damage earlier, ignore it
CMP #$0060 : BMI .enddone
LDA !IH_LETTER_Y : STA !HUD_TILEMAP+$8C
LDA !IH_LETTER_E : STA !HUD_TILEMAP+$8E
BRA .endstate

.sparklate
LDA !IH_LETTER_L : STA !HUD_TILEMAP+$8C
LDA #$0033 : SEC : SBC !SAMUS_IFRAME_TIMER
ASL : TAY : LDA.w NumberGFXTable,Y : STA !HUD_TILEMAP+$8E
BRA .endstate

.slopelate
LDA !IH_LETTER_L : STA !HUD_TILEMAP+$8C
LDA #$005F : SEC : SBC !SAMUS_IFRAME_TIMER
ASL : TAY : LDA.w NumberGFXTable,Y : STA !HUD_TILEMAP+$8E
BRA .endstate

.checkunmorph
LDA !SAMUS_IFRAME_TIMER : BEQ .damagewait : CMP #$003C : BEQ .damageunmorph
LDA !SAMUS_IFRAME_TIMER : BEQ .damagewait
CMP #$003C : BEQ .damageunmorph : BPL .slopeearly
CMP #$003B : BEQ .prepspark1 : CMP #$003A : BEQ .prepspark2

; Unmorphed late
Expand Down Expand Up @@ -708,7 +744,7 @@ status_spikesuit:
BRA .prepspark

.prepspark2
LDA #$0004 : STA !ram_roomstrat_state
LDA #$0002 : STA !ram_roomstrat_state : ASL

.prepspark
; We unmorphed on one of the two good frames
Expand Down
2 changes: 1 addition & 1 deletion src/init.asm
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,13 @@ init_sram:
STA !sram_display_mode
STA !sram_last_preset_low_word
STA !sram_save_has_set_rng
STA !sram_preset_category
STA !sram_custom_preset_slot
STA !sram_room_strat
STA !sram_sprite_prio_flag
INC : STA !sram_rerandomize
STA !sram_music_toggle
INC : STA !sram_metronome_sfx
STA !sram_preset_category
LDA #$000A : STA !sram_metronome_tickrate

.upgrade_9toA
Expand Down
7 changes: 3 additions & 4 deletions src/macros.asm
Original file line number Diff line number Diff line change
Expand Up @@ -342,15 +342,14 @@ macro cm_adjacent_submenu(title, target)
JML action_submenu
endmacro

macro cm_preset(title, target)
macro cm_preset(title, textAddr, target)
; Displays category preset name and saves full 24-bit address to preset
.dm_actionIndex
dw !ACTION_CATEGORY_PRESET
.dm_arg
dl <target>
.dm_text
table ../resources/normal.tbl
db #$28, "<title>", #$FF
.dm_textAddr
dw <textAddr>
endmacro

macro cm_custompreset(slot)
Expand Down
2 changes: 1 addition & 1 deletion src/main.asm
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ lorom
!VERSION_MAJOR = 2
!VERSION_MINOR = 7
!VERSION_BUILD = 1
!VERSION_REV = 3
!VERSION_REV = 10

table ../resources/normal.tbl
print ""
Expand Down
57 changes: 32 additions & 25 deletions src/mainmenu.asm
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,7 @@ action_submenu_jump:

preset_category_submenus:
{
dw #PresetsMenuKpdr20
dw #PresetsMenuKpdr21
dw #PresetsMenuKpdr22
dw #PresetsMenuKpdr23
Expand Down Expand Up @@ -298,6 +299,7 @@ preset_category_submenus:

preset_category_banks:
{
dw #PresetsMenuKpdr20>>16
dw #PresetsMenuKpdr21>>16
dw #PresetsMenuKpdr22>>16
dw #PresetsMenuKpdr23>>16
Expand Down Expand Up @@ -656,6 +658,7 @@ presets_current:
dl #!sram_preset_category
dw #.routine
db #$28, "CURRENT PRESET", #$FF
db #$28, " KPDR 20%", #$FF
db #$28, " KPDR 21%", #$FF
db #$28, " KPDR 22%", #$FF
db #$28, " KPDR 23%", #$FF
Expand Down Expand Up @@ -688,74 +691,78 @@ precat_kpdr:
%cm_submenu("KPDR", #SelectKpdrPresetCategoryMenu)

SelectKpdrPresetCategoryMenu:
dw #precat_kpdr20
dw #precat_kpdr21
dw #precat_kpdr22
dw #precat_kpdr23
dw #precat_kpdr25
dw #$0000
%cm_header("SELECT KPDR CATEGORY")

precat_kpdr20:
%cm_jsl("20% KPDR 15 Missiles", #action_select_preset_category, #$0000)

precat_kpdr21:
%cm_jsl("21% KPDR 3 E-Tanks", #action_select_preset_category, #$0000)
%cm_jsl("21% KPDR 3 E-Tanks", #action_select_preset_category, #$0001)

precat_kpdr22:
%cm_jsl("22% KPDR 4 E-Tanks", #action_select_preset_category, #$0001)
%cm_jsl("22% KPDR 4 E-Tanks", #action_select_preset_category, #$0002)

precat_kpdr23:
%cm_jsl("23% KPDR with Spazer", #action_select_preset_category, #$0002)
%cm_jsl("23% KPDR with Spazer", #action_select_preset_category, #$0003)

precat_kpdr25:
%cm_jsl("25% KPDR Early Ice", #action_select_preset_category, #$0003)
%cm_jsl("25% KPDR Early Ice", #action_select_preset_category, #$0004)

precat_prkd19:
%cm_jsl("19% PRKD 15 Missiles", #action_select_preset_category, #$0004)
%cm_jsl("19% PRKD 15 Missiles", #action_select_preset_category, #$0005)

precat_prkd20:
%cm_jsl("20% PRKD 20 Missiles", #action_select_preset_category, #$0005)
%cm_jsl("20% PRKD 20 Missiles", #action_select_preset_category, #$0006)

precat_pkrd:
%cm_jsl("Any% PKRD", #action_select_preset_category, #$0006)
%cm_jsl("Any% PKRD", #action_select_preset_category, #$0007)

precat_gtclassic:
%cm_jsl("GT Classic", #action_select_preset_category, #$0007)
%cm_jsl("GT Classic", #action_select_preset_category, #$0008)

precat_gtmax:
%cm_jsl("GT Max%", #action_select_preset_category, #$0008)
%cm_jsl("GT Max%", #action_select_preset_category, #$0009)

precat_100early:
%cm_jsl("100% Early Crocomire", #action_select_preset_category, #$0009)
%cm_jsl("100% Early Crocomire", #action_select_preset_category, #$000A)

precat_hundo:
%cm_jsl("100% Late Crocomire", #action_select_preset_category, #$000A)
%cm_jsl("100% Late Crocomire", #action_select_preset_category, #$000B)

precat_100map:
!PRESET_CATEGORY_100MAP_INDEX = #$000B
%cm_jsl("100% Map Completion", #action_select_preset_category, #$000B)
!PRESET_CATEGORY_100MAP_INDEX = #$000C
%cm_jsl("100% Map Completion", #action_select_preset_category, #$000C)

precat_spazermap:
!PRESET_CATEGORY_SPAZERMAP_INDEX = #$000C
%cm_jsl("100% Map with Spazer", #action_select_preset_category, #$000C)
!PRESET_CATEGORY_SPAZERMAP_INDEX = #$000D
%cm_jsl("100% Map with Spazer", #action_select_preset_category, #$000D)

precat_14ice:
%cm_jsl("14% Ice", #action_select_preset_category, #$000D)
%cm_jsl("14% Ice", #action_select_preset_category, #$000E)

precat_14speed:
%cm_jsl("14% Speed", #action_select_preset_category, #$000E)
%cm_jsl("14% Speed", #action_select_preset_category, #$000F)

precat_rbo:
%cm_jsl("Reverse Boss Order", #action_select_preset_category, #$000F)
%cm_jsl("Reverse Boss Order", #action_select_preset_category, #$0010)

precat_suitless:
%cm_jsl("Max% Suitless", #action_select_preset_category, #$0010)
%cm_jsl("Max% Suitless", #action_select_preset_category, #$0011)

precat_ngplasma:
%cm_jsl("NewGame+ Plasma", #action_select_preset_category, #$0011)
%cm_jsl("NewGame+ Plasma", #action_select_preset_category, #$0012)

precat_nghyper:
%cm_jsl("NewGame+ Hyper", #action_select_preset_category, #$0012)
%cm_jsl("NewGame+ Hyper", #action_select_preset_category, #$0013)

precat_nintendopower:
%cm_jsl("Nintendo Power%", #action_select_preset_category, #$0013)
%cm_jsl("Nintendo Power%", #action_select_preset_category, #$0014)

precat_allboss:
%cm_submenu("All Bosses", #SelectAllBossesPresetCategoryMenu)
Expand All @@ -768,13 +775,13 @@ SelectAllBossesPresetCategoryMenu:
%cm_header("SELECT ALL BOSSES CATEGORY")

precat_allbosskpdr:
%cm_jsl("All Bosses KPDR", #action_select_preset_category, #$0014)
%cm_jsl("All Bosses KPDR", #action_select_preset_category, #$0015)

precat_allbosspkdr:
%cm_jsl("All Bosses PKDR", #action_select_preset_category, #$0015)
%cm_jsl("All Bosses PKDR", #action_select_preset_category, #$0016)

precat_allbossprkd:
%cm_jsl("All Bosses PRKD", #action_select_preset_category, #$0016)
%cm_jsl("All Bosses PRKD", #action_select_preset_category, #$0017)

action_select_preset_category:
{
Expand Down
22 changes: 20 additions & 2 deletions src/menu.asm
Original file line number Diff line number Diff line change
Expand Up @@ -1678,9 +1678,27 @@ draw_category_preset:
; skip argument
INC !DP_CurrentMenu : INC !DP_CurrentMenu : INC !DP_CurrentMenu

; draw text normally
; get address to text label
%item_index_to_vram_index()
JMP cm_draw_text
LDA [!DP_CurrentMenu] : TAY

; prepare to draw text
%a8()
; ORA with palette info
LDA #$28 : ORA !DP_Palette : STA !DP_Palette
; set bank to preset names bank
PHB : LDA.b #preset_names>>16 : PHA : PLB

.loop
LDA $0000,Y : CMP #$FF : BEQ .end ; terminator
STA !ram_tilemap_buffer,X : INX ; tile
LDA !DP_Palette : STA !ram_tilemap_buffer,X : INX ; palette
INY : BRA .loop

.end
PLB
%a16()
RTS
}

cm_hex2dec_draw5:
Expand Down
Loading