@@ -345,6 +345,7 @@ static struct {
345345 // Launch GBA game from NOR memory
346346 struct {
347347 t_load_gba_lcfg l ; // ROM loading info and settings;
348+ const t_flash_game_entry * e ; // NOR game entry on RAM
348349 } norld ;
349350
350351 // Save file menu (.sav files)
@@ -855,6 +856,9 @@ static void browser_open_nor(const t_flash_game_entry * e) {
855856 // Load and set default and sane settings honoring defaults and preferences.
856857 prepare_gba_settings (& spop .p .norld .l , game_uses_dsaving , lh_sett .rtcts , game_no_save , e -> game_name );
857858
859+ // Save entry pointer
860+ spop .p .norld .e = e ;
861+
858862 // Show load ROM menu.
859863 spop .pop_num = POPUP_GBA_NORLOAD ;
860864 spop .submenu = GbaLoadPopInfo ;
@@ -1316,7 +1320,7 @@ void render_flashbrowser(volatile uint8_t *frame) {
13161320 if (smenu .fbrowser .seloff + i >= smenu .fbrowser .maxentries )
13171321 break ;
13181322
1319- t_flash_game_entry * e = & sdr_state -> nordata .games [smenu .fbrowser .seloff + i ];
1323+ const t_flash_game_entry * e = & sdr_state -> nordata .games [smenu .fbrowser .seloff + i ];
13201324 render_icon (2 , (i + 1 )* 16 , ICON_GBACART );
13211325
13221326 // Animate the row entries if they are too long!
@@ -1632,7 +1636,7 @@ void render_gba_norload(volatile uint8_t *frame) {
16321636 draw_text_ovf ("⯇" , frame , 10 , 23 , 64 );
16331637 draw_rightj_text ("⯈" , frame , SCREEN_WIDTH - 10 , 23 );
16341638
1635- t_flash_game_entry * e = & sdr_state -> nordata . games [ smenu . fbrowser . selector ] ;
1639+ const t_flash_game_entry * e = spop . p . norld . e ;
16361640 if (spop .submenu == GbaLoadPopInfo ) {
16371641 int save_type = GET_GATTR_SAVEM (e -> gattrs );
16381642 render_gbarom_info (frame , e -> game_name , false, (const char * )& e -> gamecode , e -> gamever , save_type );
@@ -2532,7 +2536,7 @@ static void keypress_popup_norload(unsigned newkeys) {
25322536 if (newkeys & KEY_BUTTDOWN )
25332537 spop .selector = MIN (GBALdSetCNT - 1 , spop .selector + 1 );
25342538
2535- const t_flash_game_entry * e = & sdr_state -> nordata . games [ smenu . fbrowser . selector ] ;
2539+ const t_flash_game_entry * e = spop . p . norld . e ;
25362540 bool uses_dsave = e -> gattrs & GATTR_SAVEDS ;
25372541 bool uses_igm = e -> gattrs & GATTR_IGM ;
25382542 bool uses_rtc = e -> gattrs & GATTR_RTC ;
@@ -2600,7 +2604,6 @@ static void keypress_popup_norload(unsigned newkeys) {
26002604
26012605 if (newkeys & KEY_BUTTA ) {
26022606 if (spop .submenu == GbaLoadPopInfo ) {
2603- const t_flash_game_entry * e = & sdr_state -> nordata .games [smenu .fbrowser .selector ];
26042607 const int stype = GET_GATTR_SAVEM (e -> gattrs );
26052608 const EnumSavetype st = stype < 0 ? SaveTypeNone : stype ;
26062609 bool uses_dsave = e -> gattrs & GATTR_SAVEDS ;
@@ -2649,8 +2652,6 @@ static void keypress_popup_norload(unsigned newkeys) {
26492652 .rtcts = spop .p .norld .l .rtcval
26502653 };
26512654
2652- const t_flash_game_entry * e = & sdr_state -> nordata .games [smenu .fbrowser .selector ];
2653-
26542655 // We load the loading settings to ensure we do not overwrite them.
26552656 load_rom_settings (e -> game_name , & ld_sett , NULL );
26562657 save_rom_settings (e -> game_name , & ld_sett , & lh_sett );
0 commit comments