@@ -37,7 +37,7 @@ static const char slash = '/';
3737#define RETRO_DEVICE_PCE_AVENUE_PAD_6 RETRO_DEVICE_SUBCLASS (RETRO_DEVICE_JOYPAD, 2 )
3838
3939#define MAX_PADS GG_MAX_GAMEPADS
40- #define MAX_BUTTONS 12
40+ #define MAX_BUTTONS 14
4141
4242static retro_environment_t environ_cb;
4343static retro_video_refresh_t video_cb;
@@ -187,16 +187,15 @@ void retro_init(void)
187187
188188 for (int i = 0 ; i < MAX_PADS; i++)
189189 {
190+ input_device[i] = RETRO_DEVICE_PCE_PAD;
191+
190192 for (int j = 0 ; j < MAX_BUTTONS; j++)
191193 {
192194 joypad_current[i][j] = 0 ;
193195 joypad_old[i][j] = 0 ;
194196 }
195197 }
196198
197- for (int i = 0 ; i < MAX_PADS; i++)
198- input_device[i] = RETRO_DEVICE_PCE_PAD;
199-
200199 libretro_supports_bitmasks = environ_cb (RETRO_ENVIRONMENT_GET_INPUT_BITMASKS, NULL );
201200}
202201
@@ -316,11 +315,11 @@ bool retro_load_game(const struct retro_game_info *info)
316315 load_bios ();
317316
318317 snprintf (retro_game_path, sizeof (retro_game_path), " %s" , info->path );
319- log_cb (RETRO_LOG_INFO, " Loading game : %s\n " , retro_game_path);
318+ log_cb (RETRO_LOG_INFO, " retro_load_game : %s\n " , retro_game_path);
320319
321320 if (IsValidPointer (info->data ))
322321 {
323- log_cb (RETRO_LOG_INFO, " Loading HuCard from buffer.\n " );
322+ log_cb (RETRO_LOG_INFO, " retro_load_game HuCard from buffer.\n " );
324323 if (!core->LoadHuCardFromBuffer ((const u8 *)(info->data ), info->size , retro_game_path))
325324 {
326325 log_cb (RETRO_LOG_ERROR, " Invalid or corrupted HuCard file.\n " );
@@ -329,7 +328,7 @@ bool retro_load_game(const struct retro_game_info *info)
329328 }
330329 else
331330 {
332- log_cb (RETRO_LOG_INFO, " Loading Media from file.\n " );
331+ log_cb (RETRO_LOG_INFO, " retro_load_game Media from file.\n " );
333332 if (!core->LoadMedia (retro_game_path))
334333 {
335334 log_cb (RETRO_LOG_ERROR, " Invalid or corrupted Media.\n " );
@@ -492,8 +491,10 @@ static void set_controller_info(void)
492491 { INDEX, RETRO_DEVICE_JOYPAD, 0 , RETRO_DEVICE_ID_JOYPAD_START, " Run" },\
493492 { INDEX, RETRO_DEVICE_JOYPAD, 0 , RETRO_DEVICE_ID_JOYPAD_Y, " III" },\
494493 { INDEX, RETRO_DEVICE_JOYPAD, 0 , RETRO_DEVICE_ID_JOYPAD_X, " IV" },\
495- { INDEX, RETRO_DEVICE_JOYPAD, 0 , RETRO_DEVICE_ID_JOYPAD_L2, " V" },\
496- { INDEX, RETRO_DEVICE_JOYPAD, 0 , RETRO_DEVICE_ID_JOYPAD_R2, " VI" },
494+ { INDEX, RETRO_DEVICE_JOYPAD, 0 , RETRO_DEVICE_ID_JOYPAD_L, " V" },\
495+ { INDEX, RETRO_DEVICE_JOYPAD, 0 , RETRO_DEVICE_ID_JOYPAD_R, " VI" },\
496+ { INDEX, RETRO_DEVICE_JOYPAD, 0 , RETRO_DEVICE_ID_JOYPAD_L2, " Toggle Turbo II" },\
497+ { INDEX, RETRO_DEVICE_JOYPAD, 0 , RETRO_DEVICE_ID_JOYPAD_R2, " Toggle Turbo I" },
497498 button_ids (0 )
498499 button_ids (1 )
499500 button_ids (2 )
@@ -574,13 +575,28 @@ static void update_input(void)
574575 joypad_current[j][5 ] = IsButtonPressed (joypad_bits[j], RETRO_DEVICE_ID_JOYPAD_B);
575576 joypad_current[j][8 ] = IsButtonPressed (joypad_bits[j], RETRO_DEVICE_ID_JOYPAD_Y);
576577 joypad_current[j][9 ] = IsButtonPressed (joypad_bits[j], RETRO_DEVICE_ID_JOYPAD_X);
577- joypad_current[j][10 ] = IsButtonPressed (joypad_bits[j], RETRO_DEVICE_ID_JOYPAD_L2);
578- joypad_current[j][11 ] = IsButtonPressed (joypad_bits[j], RETRO_DEVICE_ID_JOYPAD_R2);
578+ joypad_current[j][10 ] = IsButtonPressed (joypad_bits[j], RETRO_DEVICE_ID_JOYPAD_L);
579+ joypad_current[j][11 ] = IsButtonPressed (joypad_bits[j], RETRO_DEVICE_ID_JOYPAD_R);
580+ joypad_current[j][12 ] = IsButtonPressed (joypad_bits[j], RETRO_DEVICE_ID_JOYPAD_L2);
581+ joypad_current[j][13 ] = IsButtonPressed (joypad_bits[j], RETRO_DEVICE_ID_JOYPAD_R2);
579582 }
580583
581584 for (int j = 0 ; j < MAX_PADS; j++)
582585 for (int i = 0 ; i < MAX_BUTTONS; i++)
583586 {
587+ if (i > 11 )
588+ {
589+ GG_Keys key = (i == 12 ) ? GG_KEY_II : GG_KEY_I;
590+ if (joypad_current[j][i] && !joypad_old[j][i])
591+ {
592+ bool turbo = core->GetInput ()->IsTurboEnabled ((GG_Controllers)j, key);
593+ core->GetInput ()->EnableTurbo ((GG_Controllers)j, key, !turbo);
594+ log_cb (RETRO_LOG_DEBUG, " Toggling Turbo %d for controller %d: %d\n " , key, j, !turbo);
595+ }
596+
597+ continue ;
598+ }
599+
584600 if (joypad_current[j][i])
585601 core->KeyPressed ((GG_Controllers)j, keymap[i]);
586602 else
@@ -601,7 +617,7 @@ static void set_variabless(void)
601617 { " geargrafx_no_sprite_limit" , " No Sprite Limit; Disabled|Enabled" },
602618 { " geargrafx_backup_ram" , " Backup RAM (restart); Enabled|Disabled" },
603619 { " geargrafx_cdrom_type" , " CD-ROM (restart); Auto|Standard|Super CD-ROM|Arcade CD-ROM" },
604- { " geargrafx_cdrom_bios" , " CD-ROM Bios; Auto|System Card 1|System Card 2|System Card 3|Game Express" },
620+ { " geargrafx_cdrom_bios" , " CD-ROM Bios (restart) ; Auto|System Card 1|System Card 2|System Card 3|Game Express" },
605621 { " geargrafx_cdrom_preload" , " Preload CD-ROM (restart); Disabled|Enabled" },
606622 { " geargrafx_psg_volume" , " PSG Volume; 100|0|10|20|30|40|50|60|70|80|90|100|110|120|130|140|150|160|170|180|190|200" },
607623 { " geargrafx_cdrom_volume" , " CD-ROM Volume; 100|0|10|20|30|40|50|60|70|80|90|100|110|120|130|140|150|160|170|180|190|200" },
@@ -611,6 +627,7 @@ static void set_variabless(void)
611627 { " geargrafx_turbotap" , " TurboTap; Disabled|Enabled" },
612628 { " geargrafx_avenue_pad_3_switch" , " Avenue Pad 3 Switch; Auto|SELECT|RUN" },
613629 { " geargrafx_turbo_p1_i" , " P1 Turbo I; Disabled|Enabled" },
630+ { " geargrafx_turbo_p1_ii" , " P1 Turbo II; Disabled|Enabled" },
614631 { " geargrafx_turbo_p2_i" , " P2 Turbo I; Disabled|Enabled" },
615632 { " geargrafx_turbo_p2_ii" , " P2 Turbo II; Disabled|Enabled" },
616633 { " geargrafx_turbo_p3_i" , " P3 Turbo I; Disabled|Enabled" },
0 commit comments