Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Libretro
libretro-o2em
Commits
94327e9b
Commit
94327e9b
authored
Jun 03, 2021
by
Libretro-Admin
Browse files
Avoid having to do CRC file calculation twice
parent
726f5ad6
Pipeline
#30017
passed with stages
in 8 minutes and 13 seconds
Changes
1
Pipelines
4
Hide whitespace changes
Inline
Side-by-side
libretro.c
View file @
94327e9b
...
@@ -231,13 +231,13 @@ static bool load_bios(const char *biosname)
...
@@ -231,13 +231,13 @@ static bool load_bios(const char *biosname)
return
true
;
return
true
;
}
}
static
bool
load_cart
(
const
char
*
file
)
static
bool
load_cart
(
const
char
*
file
,
unsigned
long
crc_file
)
{
{
FILE
*
fn
;
FILE
*
fn
;
long
l
;
long
l
;
int
i
,
nb
;
int
i
,
nb
;
app_data
.
crc
=
crc
32
_file
(
file
)
;
app_data
.
crc
=
crc_file
;
if
(
app_data
.
crc
==
0xAFB23F89
)
if
(
app_data
.
crc
==
0xAFB23F89
)
app_data
.
exrom
=
1
;
/* Musician */
app_data
.
exrom
=
1
;
/* Musician */
if
(
app_data
.
crc
==
0x3BFEF56B
)
if
(
app_data
.
crc
==
0x3BFEF56B
)
...
@@ -921,146 +921,146 @@ void retro_cheat_set(unsigned index, bool enabled, const char *code)
...
@@ -921,146 +921,146 @@ void retro_cheat_set(unsigned index, bool enabled, const char *code)
bool
retro_load_game
(
const
struct
retro_game_info
*
info
)
bool
retro_load_game
(
const
struct
retro_game_info
*
info
)
{
{
char
bios_file_path
[
PATH_MAX_LENGTH
];
char
bios_file_path
[
PATH_MAX_LENGTH
];
const
char
*
full_path
,
*
system_directory_c
;
const
char
*
full_path
,
*
system_directory_c
;
enum
retro_pixel_format
fmt
=
RETRO_PIXEL_FORMAT_RGB565
;
enum
retro_pixel_format
fmt
=
RETRO_PIXEL_FORMAT_RGB565
;
struct
retro_input_descriptor
desc
[]
=
{
struct
retro_input_descriptor
desc
[]
=
{
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_LEFT
,
"Left"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_LEFT
,
"Left"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_UP
,
"Up"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_UP
,
"Up"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_DOWN
,
"Down"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_DOWN
,
"Down"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_RIGHT
,
"Right"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_RIGHT
,
"Right"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_B
,
"Action"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_B
,
"Action"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_Y
,
"Move Virtual Keyboard"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_Y
,
"Move Virtual Keyboard"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_SELECT
,
"Show/Hide Virtual Keyboard"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_SELECT
,
"Show/Hide Virtual Keyboard"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_X
,
"Numeric Key 0"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_X
,
"Numeric Key 0"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_L
,
"Numeric Key 1"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_L
,
"Numeric Key 1"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_R
,
"Numeric Key 2"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_R
,
"Numeric Key 2"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_L2
,
"Numeric Key 3"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_L2
,
"Numeric Key 3"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_R2
,
"Numeric Key 4"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_R2
,
"Numeric Key 4"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_L3
,
"Numeric Key 5"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_L3
,
"Numeric Key 5"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_R3
,
"Numeric Key 6"
},
{
0
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_R3
,
"Numeric Key 6"
},
{
1
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_LEFT
,
"Left"
},
{
1
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_LEFT
,
"Left"
},
{
1
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_UP
,
"Up"
},
{
1
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_UP
,
"Up"
},
{
1
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_DOWN
,
"Down"
},
{
1
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_DOWN
,
"Down"
},
{
1
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_RIGHT
,
"Right"
},
{
1
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_RIGHT
,
"Right"
},
{
1
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_B
,
"Action"
},
{
1
,
RETRO_DEVICE_JOYPAD
,
0
,
RETRO_DEVICE_ID_JOYPAD_B
,
"Action"
},
{
2
,
RETRO_DEVICE_POINTER
,
0
,
RETRO_DEVICE_ID_POINTER_X
,
"Virtual Keyboard: Pointer X"
},
{
2
,
RETRO_DEVICE_POINTER
,
0
,
RETRO_DEVICE_ID_POINTER_X
,
"Virtual Keyboard: Pointer X"
},
{
2
,
RETRO_DEVICE_POINTER
,
0
,
RETRO_DEVICE_ID_POINTER_Y
,
"Virtual Keyboard: Pointer Y"
},
{
2
,
RETRO_DEVICE_POINTER
,
0
,
RETRO_DEVICE_ID_POINTER_Y
,
"Virtual Keyboard: Pointer Y"
},
{
2
,
RETRO_DEVICE_POINTER
,
0
,
RETRO_DEVICE_ID_POINTER_PRESSED
,
"Virtual Keyboard: Pointer Pressed"
},
{
2
,
RETRO_DEVICE_POINTER
,
0
,
RETRO_DEVICE_ID_POINTER_PRESSED
,
"Virtual Keyboard: Pointer Pressed"
},
{
0
}
{
0
}
};
};
if
(
!
info
)
if
(
!
info
)
return
false
;
return
false
;
if
(
!
environ_cb
(
RETRO_ENVIRONMENT_SET_PIXEL_FORMAT
,
&
fmt
))
if
(
!
environ_cb
(
RETRO_ENVIRONMENT_SET_PIXEL_FORMAT
,
&
fmt
))
{
{
if
(
log_cb
)
if
(
log_cb
)
log_cb
(
RETRO_LOG_INFO
,
"[O2EM]: RGB565 is not supported.
\n
"
);
log_cb
(
RETRO_LOG_INFO
,
"[O2EM]: RGB565 is not supported.
\n
"
);
return
false
;
return
false
;
}
}
environ_cb
(
RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS
,
desc
);
environ_cb
(
RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS
,
desc
);
full_path
=
info
->
path
;
full_path
=
info
->
path
;
system_directory_c
=
NULL
;
system_directory_c
=
NULL
;
// BIOS is required
// BIOS is required
environ_cb
(
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
,
&
system_directory_c
);
environ_cb
(
RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY
,
&
system_directory_c
);
if
(
!
system_directory_c
)
if
(
!
system_directory_c
)
{
{
if
(
log_cb
)
if
(
log_cb
)
log_cb
(
RETRO_LOG_WARN
,
"[O2EM]: no system directory defined, unable to look for %s
\n
"
,
bios_file
);
log_cb
(
RETRO_LOG_WARN
,
"[O2EM]: no system directory defined, unable to look for %s
\n
"
,
bios_file
);
return
false
;
return
false
;
}
}
else
else
{
{
fill_pathname_join
(
bios_file_path
,
system_directory_c
,
bios_file
,
PATH_MAX_LENGTH
);
fill_pathname_join
(
bios_file_path
,
system_directory_c
,
bios_file
,
PATH_MAX_LENGTH
);
if
(
!
does_file_exist
(
bios_file_path
))
if
(
!
does_file_exist
(
bios_file_path
))
{
{
if
(
log_cb
)
if
(
log_cb
)
log_cb
(
RETRO_LOG_WARN
,
"[O2EM]: %s not found, cannot load BIOS
\n
"
,
bios_file
);
log_cb
(
RETRO_LOG_WARN
,
"[O2EM]: %s not found, cannot load BIOS
\n
"
,
bios_file
);
return
false
;
return
false
;
}
}
}
}
app_data
.
debug
=
0
;
app_data
.
stick
[
0
]
=
app_data
.
stick
[
1
]
=
1
;
app_data
.
sticknumber
[
0
]
=
app_data
.
sticknumber
[
1
]
=
0
;
set_defjoykeys
(
0
,
0
);
set_defjoykeys
(
1
,
1
);
set_defsystemkeys
();
app_data
.
bank
=
0
;
app_data
.
limit
=
1
;
app_data
.
sound_en
=
1
;
app_data
.
speed
=
100
;
app_data
.
wsize
=
2
;
app_data
.
fullscreen
=
0
;
app_data
.
scanlines
=
0
;
app_data
.
voice
=
1
;
app_data
.
window_title
=
"O2EM v"
O2EM_VERSION
;
/* These volume settings have no effect
* (they are allegro-specific) */
app_data
.
svolume
=
100
;
app_data
.
vvolume
=
100
;
/* Internal audio filter is worthless,
* disable it and use our own */
app_data
.
filter
=
0
;
app_data
.
exrom
=
0
;
app_data
.
three_k
=
0
;
app_data
.
crc
=
0
;
app_data
.
scshot
=
scshot
;
app_data
.
statefile
=
statefile
;
app_data
.
openb
=
0
;
app_data
.
vpp
=
0
;
app_data
.
bios
=
0
;
app_data
.
scoretype
=
0
;
app_data
.
scoreaddress
=
0
;
app_data
.
default_highscore
=
0
;
app_data
.
breakpoint
=
65535
;
app_data
.
megaxrom
=
0
;
strcpy
(
scorefile
,
"highscore.txt"
);
//read_default_config();
init_audio
();
crcx
=
crc32_file
(
full_path
);
app_data
.
crc
=
crcx
;
//suck_bios();
o2flag
=
1
;
//suck_roms();
if
(
!
load_bios
(
bios_file_path
))
return
false
;
app_data
.
debug
=
0
;
if
(
!
load_cart
(
full_path
,
crcx
))
app_data
.
stick
[
0
]
=
app_data
.
stick
[
1
]
=
1
;
return
false
;
app_data
.
sticknumber
[
0
]
=
app_data
.
sticknumber
[
1
]
=
0
;
set_defjoykeys
(
0
,
0
);
set_defjoykeys
(
1
,
1
);
set_defsystemkeys
();
app_data
.
bank
=
0
;
app_data
.
limit
=
1
;
app_data
.
sound_en
=
1
;
app_data
.
speed
=
100
;
app_data
.
wsize
=
2
;
app_data
.
fullscreen
=
0
;
app_data
.
scanlines
=
0
;
app_data
.
voice
=
1
;
app_data
.
window_title
=
"O2EM v"
O2EM_VERSION
;
/* These volume settings have no effect
* (they are allegro-specific) */
app_data
.
svolume
=
100
;
app_data
.
vvolume
=
100
;
/* Internal audio filter is worthless,
* disable it and use our own */
app_data
.
filter
=
0
;
app_data
.
exrom
=
0
;
app_data
.
three_k
=
0
;
app_data
.
crc
=
0
;
app_data
.
scshot
=
scshot
;
app_data
.
statefile
=
statefile
;
app_data
.
openb
=
0
;
app_data
.
vpp
=
0
;
app_data
.
bios
=
0
;
app_data
.
scoretype
=
0
;
app_data
.
scoreaddress
=
0
;
app_data
.
default_highscore
=
0
;
app_data
.
breakpoint
=
65535
;
app_data
.
megaxrom
=
0
;
strcpy
(
scorefile
,
"highscore.txt"
);
//read_default_config();
init_audio
();
app_data
.
crc
=
crc32_file
(
full_path
);
//suck_bios();
o2flag
=
1
;
crcx
=
app_data
.
crc
;
//suck_roms();
if
(
!
load_bios
(
bios_file_path
))
return
false
;
if
(
!
load_cart
(
full_path
))
return
false
;
#ifdef HAVE_VOICE
#ifdef HAVE_VOICE
if
(
app_data
.
voice
)
if
(
app_data
.
voice
)
{
{
audio_mixer_init
(
44100
);
audio_mixer_init
(
44100
);
char
voice_path
[
PATH_MAX_LENGTH
];
char
voice_path
[
PATH_MAX_LENGTH
];
fill_pathname_join
(
voice_path
,
system_directory_c
,
"voice"
,
PATH_MAX_LENGTH
);
fill_pathname_join
(
voice_path
,
system_directory_c
,
"voice"
,
PATH_MAX_LENGTH
);
init_voice
(
voice_path
);
init_voice
(
voice_path
);
}
}
#endif
#endif
init_display
();
init_display
();
init_cpu
();
init_cpu
();
init_system
();
init_system
();
set_score
(
app_data
.
scoretype
,
app_data
.
scoreaddress
,
app_data
.
default_highscore
);
set_score
(
app_data
.
scoretype
,
app_data
.
scoreaddress
,
app_data
.
default_highscore
);
return
true
;
return
true
;
}
}
bool
retro_load_game_special
(
unsigned
game_type
,
const
struct
retro_game_info
*
info
,
size_t
num_info
)
bool
retro_load_game_special
(
unsigned
game_type
,
const
struct
retro_game_info
*
info
,
size_t
num_info
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment