Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
176cb8b
Improve Pseudo G-Mode
InsaneFirebat Mar 25, 2025
ca98c42
Controller Shortcuts are now (almost) Awesome
idlechild Mar 25, 2025
59d24a1
BRB - change custom practice hack message
InsaneFirebat Mar 25, 2025
c00d67e
Fixed bug, improved second controller handling, added splash screen
idlechild Mar 26, 2025
9191be3
Write ctrl shortcut routine if we don't quickboot to main menu
idlechild Mar 29, 2025
7e3e6ec
Implement loadstate variance as a separate toggle
idlechild Mar 30, 2025
8a3bd1f
Adjust keyboard ram location to avoid conflicts
idlechild Mar 31, 2025
784dd4f
Extend spacetime beam protection over ctrl shortcut routine
idlechild Mar 31, 2025
215571b
Replace hard-coded soft reset with ctrl shortcut
idlechild Mar 31, 2025
cac0e0f
Further refinements for pseudo g-mode
idlechild Mar 31, 2025
d4db69b
Add DEV shortcut
idlechild Apr 1, 2025
71f0a11
Fix slow unpause issue caused by save state changing the bank
idlechild Apr 1, 2025
532c467
Revert unhelpful refinements to pseudo g-mode
idlechild Apr 1, 2025
75f590d
Fix hitboxes for frozen enemies with extended spritemaps
idlechild Apr 1, 2025
f0cbbb6
Improved integration of InfoHUD options and the Super HUD
idlechild Apr 7, 2025
40b76f6
Initial pass at ridley RNG support
idlechild Apr 10, 2025
d4156d9
Split out platforms and move MiSTer up to 256k SRAM support
idlechild Apr 12, 2025
3058f09
Combine Zeb events and add speedbooster quake
InsaneFirebat Apr 22, 2025
037c3a8
Change Zebettites from choice to numfield
InsaneFirebat Apr 24, 2025
cea24e4
Combine Metroids events
InsaneFirebat Apr 25, 2025
6bc2cef
Add Mother Brain RNG and refactor existing RNG routines
idlechild May 18, 2025
3d04eab
Added option to override all drop chance tables
idlechild May 19, 2025
7746ed9
Fix water physics after collecting space jump
idlechild May 19, 2025
b859e4b
Fix Dachora room revisit category preset scrolls
idlechild May 19, 2025
063b4fb
Add Y1/Y2 support to Botwoon CF trainer
idlechild May 19, 2025
5446d41
Finalize BRB splash screen logic
idlechild May 27, 2025
dbff6aa
Start of ctrl shortcut routine slightly offset from tilemap buffer
idlechild Jun 8, 2025
2afc74b
Require blank input to be held for two seconds instead of just one
idlechild Jun 8, 2025
b0f5d44
Enable the pause and unpause shortcuts
idlechild Jun 23, 2025
92c4efe
Fix energy/ammo refill message box timing
idlechild Jun 23, 2025
177bd3e
Use more RAM defines in code
idlechild Jun 25, 2025
2ac9cb7
Force stand puts Samus into facing forward pose
idlechild Jun 25, 2025
ee7d337
Run shortcut routine during door transition and fanfare
idlechild Jun 28, 2025
3df6cbe
Merge pull request #3 from InsaneFirebat/Zeb-events
idlechild Jul 4, 2025
7f85cef
Add four past values to shot timer infohud mode
idlechild Jul 4, 2025
7110a57
Fix skip gameover load preset scenario
idlechild Jul 5, 2025
9050194
Use maprando baby cutscene with door portals
idlechild Jul 6, 2025
52a71fe
Verify horizontal mirroring before flipping Samus in a door portal
idlechild Jul 6, 2025
5bd364e
Prepare for 2.7.0 release
idlechild Jul 6, 2025
0a1fbf1
Remove spore spawn camera scroll lock from top door in map rando
idlechild Jul 6, 2025
365340a
Remove crocomire red scrolls from left door in map rando
idlechild Jul 6, 2025
f6740ea
Fix issue where sram initialized before validation flag set
idlechild Jul 6, 2025
e44f65e
Fix Samus 32x32 grid projectiles
idlechild Jul 6, 2025
132b288
Release 2.7.0
idlechild Jul 6, 2025
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
85 changes: 0 additions & 85 deletions TODO.txt

This file was deleted.

Binary file modified resources/cm_gfx.bin
Binary file not shown.
Binary file modified resources/cm_gfx2.bin
Binary file not shown.
188 changes: 140 additions & 48 deletions src/BRBmenu.asm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ cm_brb_table:
; 1000h bytes transferred
incbin ../resources/cm_brb_gfx.bin

%endfree(8E)


%startfree(A1)

; --------
; BRB Menu
Expand Down Expand Up @@ -51,10 +55,10 @@ brb_menu_timer_mode:
db #$FF

brb_menu_timer_min:
%cm_numfield("Minutes on Timer", !ram_cm_brb_mins, 0, 99, 1, 5, #0)
%cm_numfield("Minutes on Timer", !ram_cm_brb_mins, 0, 99, 1, 2, #0)

brb_menu_timer_sec:
%cm_numfield("Seconds on Timer", !ram_cm_brb_secs, 0, 59, 1, 5, #0)
%cm_numfield("Seconds on Timer", !ram_cm_brb_secs, 0, 59, 1, 2, #0)

brb_menu_timer_clear:
%cm_jsl("Clear Timer", .routine, #0)
Expand Down Expand Up @@ -182,9 +186,15 @@ cm_brb_loop:
cm_draw_brb:
{
JSL cm_tilemap_bg_interior_long
LDA !ram_sram_detection : BNE .splash_screen
JSR cm_tilemap_brb
JSL cm_tilemap_transfer_long
JMP cm_brb_scroll_BG3

.splash_screen
JSR cm_tilemap_splash_screen
JSL cm_tilemap_transfer_long
RTS
}

cm_tilemap_brb:
Expand Down Expand Up @@ -230,11 +240,11 @@ cm_tilemap_brb:
; Same bank for all of the BRB text
PHK : PHK : PLA : STA !DP_CurrentMenu+2

LDA.w #BRB_common_1 : STA !DP_CurrentMenu
LDA.w #BRB_common_line1 : STA !DP_CurrentMenu
LDX #$01C6
JSR cm_draw_brb_text

LDA.w #BRB_common_2 : STA !DP_CurrentMenu
LDA.w #BRB_common_line2 : STA !DP_CurrentMenu
LDX #$0286
JSR cm_draw_brb_text

Expand Down Expand Up @@ -274,19 +284,71 @@ cm_tilemap_brb:
; Draw cycling text
; first cycled line
LDA !ram_cm_brb_screen : ASL : TAX
LDA.l BRBTilemapAddress,X : STA !DP_CurrentMenu
LDA.l BRBTilemapTableLine1,X : STA !DP_CurrentMenu
LDX #$04C6
JSR cm_draw_brb_text

; second cycled line
LDA !ram_cm_brb_screen : ASL : TAX
LDA.l BRBTilemapAddress2,X : STA !DP_CurrentMenu
LDA.l BRBTilemapTableLine2,X : STA !DP_CurrentMenu
LDX #$0586
JSR cm_draw_brb_text

RTS
}

cm_tilemap_splash_screen:
{
; Same bank for all of the BRB text
PHK : PHK : PLA : STA !DP_CurrentMenu+2

LDA !ram_sram_detection
CMP !SRAM_DETECTION_32KB : BEQ .legacy
CMP !SRAM_DETECTION_128KB : BEQ .tinystates
CMP !SRAM_DETECTION_ZSNES : BEQ .zsnes
BRK

.legacy
LDA.w #BRB_legacy_line2 : STA !DP_CurrentMenu
LDX #$0406
JSR cm_draw_brb_text
LDA.w #BRB_legacy_line3 : STA !DP_CurrentMenu
LDX #$04C6
JSR cm_draw_brb_text
BRA .splashLine4

.tinystates
LDA.w #BRB_tinystates_line2 : STA !DP_CurrentMenu
LDX #$0406
JSR cm_draw_brb_text
LDA.w #BRB_tinystates_line3 : STA !DP_CurrentMenu
LDX #$04C6
JSR cm_draw_brb_text
BRA .splashLine4

.zsnes
LDA.w #BRB_zsnes_line2 : STA !DP_CurrentMenu
LDX #$0406
JSR cm_draw_brb_text
LDA.w #BRB_zsnes_line4 : STA !DP_CurrentMenu
LDX #$0586
JSR cm_draw_brb_text
BRA .splashLine1

.splashLine4
LDA.w #BRB_splash_line4 : STA !DP_CurrentMenu
LDX #$0586
JSR cm_draw_brb_text

.splashLine1
LDA.w #BRB_splash_line1 : STA !DP_CurrentMenu
LDX #$0346
JSR cm_draw_brb_text
LDA.w #BRB_splash_title : STA !DP_CurrentMenu
LDX #$01C6
JMP cm_draw_brb_text
}

brb_handle_countup_timer:
{
LDA !ram_cm_brb_frames : INC : STA !ram_cm_brb_frames
Expand Down Expand Up @@ -464,74 +526,104 @@ cm_brb_scroll_BG3:
; BRB Text Data
; -------------

BRB_common_1:
table ../resources/header.tbl
BRB_common_line1:
db #$28, " The Streamer", #$FF

BRB_common_2:
BRB_common_line2:
db #$28, " Will Be Right Back", #$FF


BRB_splash_title:
db #$28, " Wrong Platform Selected", #$FF


BRB_zsnes_line4:
db #$28, " DO NOT USE ZSNES", #$FF
table ../resources/normal.tbl

BRBTilemapAddress:
dw #BRB_screen_01
dw #BRB_screen_02
dw #BRB_screen_03
dw #BRB_screen_04
dw #BRB_screen_05
dw #BRB_screen_06
dw #BRB_screen_07

BRB_screen_01:
db #$28, " SM Speedrunning Wiki", #$FF
BRB_splash_line1:
db #$28, " You need to select", #$FF
BRB_splash_line4:
db #$28, " at smpractice.speedga.me", #$FF

BRB_screen_02:
db #$28, " SM Speedrunning Discord", #$FF

BRB_screen_03:
db #$28, "Find the practice hack at", #$FF
BRB_legacy_line2:
db #$28, " SNES Classic or", #$FF
BRB_legacy_line3:
db #$28, " Virtual Console", #$FF

BRB_screen_04:
db #$28, " Control Schemes for SM", #$FF

BRB_screen_05:
db #$28, "Support FUNtoon on Patreon", #$FF
BRB_tinystates_line2:
db #$28, " Everdrive or", #$FF
BRB_tinystates_line3:
db #$28, " Snes9x 1.60 or older", #$FF


BRB_zsnes_line2:
db #$28, " another emulator", #$FF

BRB_screen_06:
db #$28, " Crazy chain damage clips", #$FF

BRB_screen_07:
db #$28, " Customized practice hacks", #$FF
BRBTilemapTableLine1:
dw #BRB_screen1_line1
dw #BRB_screen2_line1
dw #BRB_screen3_line1
dw #BRB_screen4_line1
dw #BRB_screen5_line1
dw #BRB_screen6_line1
dw #BRB_screen7_line1

BRBTilemapAddress2:
dw #BRB_screen2_01
dw #BRB_screen2_02
dw #BRB_screen2_03
dw #BRB_screen2_04
dw #BRB_screen2_05
dw #BRB_screen2_06
dw #BRB_screen2_07
BRBTilemapTableLine2:
dw #BRB_screen1_line2
dw #BRB_screen2_line2
dw #BRB_screen3_line2
dw #BRB_screen4_line2
dw #BRB_screen5_line2
dw #BRB_screen6_line2
dw #BRB_screen7_line2

BRB_screen2_01:

BRB_screen1_line1:
db #$28, " SM Speedrunning Wiki", #$FF
BRB_screen1_line2:
db #$28, " wiki.supermetroid.run", #$FF

BRB_screen2_02:

BRB_screen2_line1:
db #$28, " SM Speedrunning Discord", #$FF
BRB_screen2_line2:
db #$28, " SMDiscord.spazer.link", #$FF

BRB_screen2_03:

BRB_screen3_line1:
db #$28, "Find the practice hack at", #$FF
BRB_screen3_line2:
db #$28, " smpractice.speedga.me", #$FF

BRB_screen2_04:

BRB_screen4_line1:
db #$28, " Control Schemes for SM", #$FF
BRB_screen4_line2:
db #$28, " controls.spazer.link", #$FF

BRB_screen2_05:

BRB_screen5_line1:
db #$28, "Support FUNtoon on Patreon", #$FF
BRB_screen5_line2:
; !funtoonpatreon
db #$28, " ", #$1A, "funtoonpatreon", #$FF

BRB_screen2_06:

BRB_screen6_line1:
db #$28, " Crazy chain damage clips", #$FF
BRB_screen6_line2:
db #$28, " chain.spazer.link", #$FF

BRB_screen2_07:
db #$28, " by InsaneFirebat", #$FF

%endfree(8E)
BRB_screen7_line1:
db #$28, " Learn new SM strats at", #$FF
BRB_screen7_line2:
db #$28, " crocomi.re", #$FF

%endfree(A1)

16 changes: 5 additions & 11 deletions src/crash.asm
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,8 @@ CrashViewer:
STA !ram_crash_input : STA !ram_crash_input_new
LDA #$0001 : STA !ram_crash_bg
LDA !IH_CONTROLLER_PRI_NEW : STA !ram_crash_input_prev
LDA #$0A44 : STA !ram_crash_mem_viewer
LDA #$007E : STA !ram_crash_mem_viewer_bank
LDA.w !CRASH_INITIAL_ADDRESS : STA !ram_crash_mem_viewer
LDA.w !CRASH_INITIAL_ADDRESS>>16 : STA !ram_crash_mem_viewer_bank

; fall through to CrashLoop
}
Expand Down Expand Up @@ -247,16 +247,10 @@ CrashLoop:
.skipSoftReset

if !FEATURE_SD2SNES
; check for load state shortcut
LDA !ram_crash_input : CMP !sram_ctrl_load_state : BNE .skipLoadState
; check for load state shortcut (Select+Y+L)
LDA !ram_crash_input : CMP #$6020 : BNE .skipLoadState
AND !ram_crash_input_new : BEQ .skipLoadState
LDA !SRAM_SAVED_STATE : CMP !SAFEWORD : BNE .skipLoadState
; prepare to jump to load_state
%a8()
LDA.b #gamemode_start>>16 : PHA : PLB
%a16()
PEA.w gamemode_start_return-1
JML gamemode_shortcuts_load_state
JSL gamemode_load_state
.skipLoadState
endif

Expand Down
Loading