Skip to content

Commit

Permalink
Move global options into Config struct
Browse files Browse the repository at this point in the history
  • Loading branch information
negativeExponent committed Jan 21, 2020
1 parent 144fbd3 commit 96c70b1
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 41 deletions.
56 changes: 29 additions & 27 deletions libretro.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,6 @@ int CHANGEAV = 0;
int CHANGEAV_TIMING = 0; /* Separate change of geometry from change of refresh rate */
int VID_MODE = 1;
float FRAMERATE = MODE_NORM;
int JOY_TYPE[2] = {0}; /* Set controller type for each player to use */
int clockmhz = 10;
DWORD ram_size;
DWORD libretro_supports_input_bitmasks = 0;

static signed short soundbuf[1024 * 2];
Expand Down Expand Up @@ -608,11 +605,11 @@ static void update_variables(void)
var.value = NULL;
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) {
if (!(strcmp(var.value, "Default (2 Buttons)"))) {
JOY_TYPE[i] = 0;
Config.JOY_TYPE[i] = 0;
} else if (!(strcmp(var.value, "CPSF-MD (8 Buttons)"))) {
JOY_TYPE[i] = 1;
Config.JOY_TYPE[i] = 1;
} else if (!(strcmp(var.value, "CPSF-SFC (8 Buttons)"))) {
JOY_TYPE[i] = 2;
Config.JOY_TYPE[i] = 2;
}
}
}
Expand All @@ -623,54 +620,55 @@ static void update_variables(void)
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
if (strcmp(var.value, "10Mhz") == 0)
clockmhz = 10;
Config.clockmhz = 10;
else if (strcmp(var.value, "16Mhz") == 0)
clockmhz = 16;
Config.clockmhz = 16;
else if (strcmp(var.value, "25Mhz") == 0)
clockmhz = 25;
Config.clockmhz = 25;
else if (strcmp(var.value, "33Mhz (OC)") == 0)
clockmhz = 33;
Config.clockmhz = 33;
else if (strcmp(var.value, "66Mhz (OC)") == 0)
clockmhz = 66;
Config.clockmhz = 66;
else if (strcmp(var.value, "100Mhz (OC)") == 0)
clockmhz = 100;
Config.clockmhz = 100;
else if (strcmp(var.value, "150Mhz (OC)") == 0)
clockmhz = 150;
Config.clockmhz = 150;
else if (strcmp(var.value, "200Mhz (OC)") == 0)
clockmhz = 200;
Config.clockmhz = 200;
}

var.key = "px68k_ramsize";
var.value = NULL;

if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
int value = 0;
if (strcmp(var.value, "1MB") == 0)
ram_size = 1;
value = 1;
else if (strcmp(var.value, "2MB") == 0)
ram_size = 2;
value = 2;
else if (strcmp(var.value, "3MB") == 0)
ram_size = 3;
value = 3;
else if (strcmp(var.value, "4MB") == 0)
ram_size = 4;
value = 4;
else if (strcmp(var.value, "5MB") == 0)
ram_size = 5;
value = 5;
else if (strcmp(var.value, "6MB") == 0)
ram_size = 6;
value = 6;
else if (strcmp(var.value, "7MB") == 0)
ram_size = 7;
value = 7;
else if (strcmp(var.value, "8MB") == 0)
ram_size = 8;
value = 8;
else if (strcmp(var.value, "9MB") == 0)
ram_size = 9;
value = 9;
else if (strcmp(var.value, "10MB") == 0)
ram_size = 10;
value = 10;
else if (strcmp(var.value, "11MB") == 0)
ram_size = 11;
value = 11;
else if (strcmp(var.value, "12MB") == 0)
ram_size = 12;
value = 12;

ram_size <<= 20; /* convert to bytes */
Config.ram_size = (value * 1024 * 1024);
}

var.key = "px68k_analog";
Expand Down Expand Up @@ -1040,6 +1038,10 @@ void retro_init(void)

/* set sane defaults */
Config.disk_path = 1;
Config.clockmhz = 10;
Config.ram_size = 2 * 1024 *1024;
Config.JOY_TYPE[0] = 0;
Config.JOY_TYPE[1] = 0;

update_variables();

Expand Down
3 changes: 1 addition & 2 deletions libretro/joystick.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

#include "libretro.h"
extern retro_input_state_t input_state_cb;
extern int JOY_TYPE[2];
extern DWORD libretro_supports_input_bitmasks;

#ifndef MAX_BUTTON
Expand Down Expand Up @@ -130,7 +129,7 @@ void FASTCALL Joystick_Update(int is_menu, int key, int port)
if (res & (1 << RETRO_DEVICE_ID_JOYPAD_DOWN)) ret0 ^= JOY_DOWN;

/* Buttons */
switch (JOY_TYPE[port]) {
switch (Config.JOY_TYPE[port]) {
case PAD_2BUTTON:
if (res & (1 << RETRO_DEVICE_ID_JOYPAD_A)) ret0 ^= (Config.VbtnSwap ? JOY_TRG1 : JOY_TRG2);
if (res & (1 << RETRO_DEVICE_ID_JOYPAD_B)) ret0 ^= (Config.VbtnSwap ? JOY_TRG2 : JOY_TRG1);
Expand Down
9 changes: 9 additions & 0 deletions libretro/prop.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,15 @@ typedef struct
int MenuFontSize; // font size of menu, 0 = normal, 1 = large
int joy1_select_mapping; /* used for keyboard to joypad map for P1 Select */
int disk_path;
/* Cpu clock in MHz */
int clockmhz;
/* RAM Size = size * 1024 * 1024 */
int ram_size;
/* Set controller type for each player to use
* 0 = Standard 2-buttons gamepad
* 1 = CPSF-MD (8 Buttons
* 2 = CPSF-SFC (8 Buttons) */
int JOY_TYPE[2];
} Win68Conf;

extern Win68Conf Config;
Expand Down
21 changes: 9 additions & 12 deletions libretro/winx68k.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,8 @@ static int ClkUsed = 0;
static int FrameSkipCount = 0;
static int FrameSkipQueue = 0;

extern DWORD ram_size;
extern int clockmhz;

DWORD old_ram_size = 0;
int old_clkdiv = 0;
static DWORD old_ram_size = 0;
static int old_clkdiv = 0;

#ifdef __cplusplus
};
Expand Down Expand Up @@ -333,9 +330,9 @@ void WinX68k_Exec(void)
int KeyIntCnt = 0, MouseIntCnt = 0;
DWORD t_start = timeGetTime(), t_end;

if(!(Memory_ReadD(0xed0008)==ram_size)){
if(!(Memory_ReadD(0xed0008)==Config.ram_size)){
Memory_WriteB(0xe8e00d, 0x31); // SRAM write permission
Memory_WriteD(0xed0008, ram_size); // Define RAM amount
Memory_WriteD(0xed0008, Config.ram_size); // Define RAM amount
}

Joystick_Update(FALSE, -1, 0);
Expand Down Expand Up @@ -364,8 +361,8 @@ void WinX68k_Exec(void)
clk_count = -ICount;
clk_total = (CRTC_Regs[0x29] & 0x10) ? VSYNC_HIGH : VSYNC_NORM;

clk_total = (clk_total*clockmhz)/10;
clkdiv = clockmhz;
clk_total = (clk_total*Config.clockmhz)/10;
clkdiv = Config.clockmhz;

// if (Config.XVIMode == 1) {
// clk_total = (clk_total*16)/10;
Expand All @@ -377,11 +374,11 @@ void WinX68k_Exec(void)
// clkdiv = 10;
// }

if(clkdiv != old_clkdiv || ram_size != old_ram_size){
if(clkdiv != old_clkdiv || Config.ram_size != old_ram_size){
p6logd("CPU Clock: %d%s\n",clkdiv,"MHz");
p6logd("RAM Size: %ld%s\n",ram_size/1000000,"MB");
p6logd("RAM Size: %ld%s\n",Config.ram_size/1000000,"MB");
old_clkdiv = clkdiv;
old_ram_size = ram_size;
old_ram_size = Config.ram_size;
}

ICount += clk_total;
Expand Down

0 comments on commit 96c70b1

Please sign in to comment.