#include "libretro.h"
#ifdef _3DS
-#include "3ds.h"
#include "3ds/3ds_utils.h"
-int ctr_svchack_init_success = 0;
#endif
static retro_video_refresh_t video_cb;
(void)is_fixed;
(void)addr;
- if (ctr_svchack_init_success)
+ if (__ctr_svchax)
{
psx_map_t* custom_map = custom_psx_maps;
custom_map->buffer = malloc(size + 0x1000);
ptr_aligned = (((u32)custom_map->buffer) + 0xFFF) & ~0xFFF;
- if(svcControlMemory(&tmp, custom_map->target_map, ptr_aligned, size, MEMOP_MAP, 0x3) < 0)
+ if(svcControlMemory(&tmp, (void*)custom_map->target_map, (void*)ptr_aligned, size, MEMOP_MAP, 0x3) < 0)
{
SysPrintf("could not map memory @0x%08X\n", custom_map->target_map);
exit(1);
{
(void)tag;
- if (ctr_svchack_init_success)
+ if (__ctr_svchax)
{
psx_map_t* custom_map = custom_psx_maps;
ptr_aligned = (((u32)custom_map->buffer) + 0xFFF) & ~0xFFF;
- svcControlMemory(&tmp, custom_map->target_map, ptr_aligned, size, MEMOP_UNMAP, 0x3);
+ svcControlMemory(&tmp, (void*)custom_map->target_map, (void*)ptr_aligned, size, MEMOP_UNMAP, 0x3);
free(custom_map->buffer);
custom_map->buffer = NULL;
R3000Acpu *prev_cpu = psxCpu;
#ifdef _3DS
- if(!ctr_svchack_init_success)
+ if(!__ctr_svchax)
Config.Cpu = CPU_INTERPRETER;
else
#endif
void retro_run(void)
{
- int i;
+ int i, val;
input_poll_cb();
if (in_type1 == PSE_PAD_TYPE_NEGCON)
{
- in_a1[0] = 0;
-
- if(input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, 12)) // left brake
+ /* left brake */
+ if(input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, 12))
in_a1[1] = 255;
else
in_a1[1] = 0;
-
- in_a2[0] = (input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X) / 256) + 128; //steer
- in_a2[1] = 255 - ((input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y) / 256) + 128); //thrust
+ /* steer */
+ in_a2[0] = (input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X) / 256) + 128;
+
+ /* thrust and fire */
+ val = ((input_state_cb(0, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y) / 127));
+ if(val < -2) {
+ in_a1[0] = 256 - val;
+ }
+ if (val > 2) {
+ in_a2[1] = val;
+ }
+ if(val >= -2 && val <= 2)
+ {
+ in_a2[1] = 0;
+ in_a1[0] = 0;
+ }
}
if (in_type2 == PSE_PAD_TYPE_NEGCON)
{
- in_a3[0] = 0;
-
- if(input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, 12)) // left brake
+ /* left brake */
+ if(input_state_cb(1, RETRO_DEVICE_JOYPAD, 0, 12))
in_a3[1] = 255;
else
in_a3[1] = 0;
-
- in_a4[0] = (input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X) / 256) + 128; //steer
- in_a4[1] = 255 - ((input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y) / 256) + 128); //thrust
+ /* steer */
+ in_a4[0] = (input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_X) / 256) + 128;
+
+ /* thrust and fire */
+ val = ((input_state_cb(1, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_RIGHT, RETRO_DEVICE_ID_ANALOG_Y) / 127));
+ if(val < -2) {
+ in_a3[0] = 256 - val;
+ }
+ if (val > 2) {
+ in_a4[1] = val;
+ }
+ if(val >= -2 && val <= 2)
+ {
+ in_a4[1] = 0;
+ in_a3[0] = 0;
+ }
}
bool found_bios = false;
#ifdef _3DS
- ctr_svchack_init_success = ctr_svchack_init();
psxMapHook = pl_3ds_mmap;
psxUnmapHook = pl_3ds_munmap;
#endif
ret = emu_core_preinit();
#ifdef _3DS
/* emu_core_preinit sets the cpu to dynarec */
- if(!ctr_svchack_init_success)
+ if(!__ctr_svchax)
Config.Cpu = CPU_INTERPRETER;
#endif
ret |= emu_core_init();