Making arkanoid input support optional (as it hurts performance
This commit is contained in:
parent
482687539e
commit
831ad3908a
|
@ -22,7 +22,7 @@ jobs:
|
||||||
- name: Installing apt packages
|
- name: Installing apt packages
|
||||||
run: sudo apt install libgtest-dev gcovr libtbb-dev libsdl2-dev libsdl2-image-dev
|
run: sudo apt install libgtest-dev gcovr libtbb-dev libsdl2-dev libsdl2-image-dev
|
||||||
- name: Run meson configuration
|
- name: Run meson configuration
|
||||||
run: meson setup build -DonlyOpenSource=true
|
run: meson setup build -DonlyOpenSource=true -DenableArkanoidInputs=true
|
||||||
- name: Building project
|
- name: Building project
|
||||||
run: ninja -C build
|
run: ninja -C build
|
||||||
- name: Running tests
|
- name: Running tests
|
||||||
|
|
|
@ -26,3 +26,9 @@ option('onlyOpenSource',
|
||||||
yield: true
|
yield: true
|
||||||
)
|
)
|
||||||
|
|
||||||
|
option('enableArkanoidInputs',
|
||||||
|
type : 'boolean',
|
||||||
|
value : false,
|
||||||
|
description : 'Build tests',
|
||||||
|
yield: true
|
||||||
|
)
|
|
@ -719,6 +719,7 @@ class Core : private Cpu
|
||||||
|
|
||||||
void setControllerType(controllerType_t type) { _controllerType = type; }
|
void setControllerType(controllerType_t type) { _controllerType = type; }
|
||||||
|
|
||||||
|
#ifdef _QUICKERNES_SUPPORT_ARKANOID_INPUTS
|
||||||
int read_io(nes_addr_t addr)
|
int read_io(nes_addr_t addr)
|
||||||
{
|
{
|
||||||
if ((addr & 0xFFFE) == 0x4016)
|
if ((addr & 0xFFFE) == 0x4016)
|
||||||
|
@ -761,10 +762,10 @@ class Core : private Cpu
|
||||||
// latch 0 encodes fire
|
// latch 0 encodes fire
|
||||||
uint8_t result = (input_state.arkanoid_fire & 1) * 2;
|
uint8_t result = (input_state.arkanoid_fire & 1) * 2;
|
||||||
|
|
||||||
// latch 0 also encodes joypad 1
|
// latch 0 also encodes input_state 1
|
||||||
result += (input_state.joypad_latches[0] & 1) & 1;
|
result += (input_state.joypad_latches[0] & 1) & 1;
|
||||||
|
|
||||||
// Advancing joypad latch
|
// Advancing input_state latch
|
||||||
input_state.joypad_latches[0] >>= 1;
|
input_state.joypad_latches[0] >>= 1;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -792,6 +793,26 @@ class Core : private Cpu
|
||||||
|
|
||||||
return addr >> 8; // simulate open bus
|
return addr >> 8; // simulate open bus
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
int read_io(nes_addr_t addr)
|
||||||
|
{
|
||||||
|
if ((addr & 0xFFFE) == 0x4016)
|
||||||
|
{
|
||||||
|
// to do: to aid with recording, doesn't emulate transparent latch,
|
||||||
|
// so a game that held strobe at 1 and read $4016 or $4017 would not get
|
||||||
|
// the current A status as occurs on a NES
|
||||||
|
if (input_state.w4016 & 1) return 0;
|
||||||
|
const uint8_t result = input_state.joypad_latches[addr & 1] & 1;
|
||||||
|
input_state.joypad_latches[addr & 1] >>= 1;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (addr == Apu::status_addr)
|
||||||
|
return impl->apu.read_status(clock());
|
||||||
|
|
||||||
|
return addr >> 8; // simulate open bus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void write_io(nes_addr_t addr, int data)
|
void write_io(nes_addr_t addr, int data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,10 +28,17 @@ quickerNESSrc = quickerNESAPUSrc + quickerNESPPUSrc + [
|
||||||
'core/cpu.cpp'
|
'core/cpu.cpp'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
quickerNESCompileArgs = [ ]
|
||||||
|
|
||||||
|
# Checking for arkanoid input support
|
||||||
|
if get_option('enableArkanoidInputs') == true
|
||||||
|
quickerNESCompileArgs += '-D_QUICKERNES_SUPPORT_ARKANOID_INPUTS'
|
||||||
|
endif
|
||||||
|
|
||||||
# quickerNES Core Configuration
|
# quickerNES Core Configuration
|
||||||
|
|
||||||
quickerNESDependency = declare_dependency(
|
quickerNESDependency = declare_dependency(
|
||||||
compile_args : [ ],
|
compile_args : quickerNESCompileArgs,
|
||||||
include_directories : include_directories(['.', '..']),
|
include_directories : include_directories(['.', '..']),
|
||||||
sources : [ quickerNESSrc ],
|
sources : [ quickerNESSrc ],
|
||||||
dependencies : [
|
dependencies : [
|
||||||
|
|
|
@ -92,6 +92,8 @@ if get_option('onlyOpenSource') == false
|
||||||
args : [ testFile, '--cycleType', 'Full'],
|
args : [ testFile, '--cycleType', 'Full'],
|
||||||
suite : [ testSuite ])
|
suite : [ testSuite ])
|
||||||
|
|
||||||
|
if get_option('enableArkanoidInputs') == true
|
||||||
|
|
||||||
testFile = 'arkanoid.arkNESController.test'
|
testFile = 'arkanoid.arkNESController.test'
|
||||||
testSuite = testFile.split('.')[0]
|
testSuite = testFile.split('.')[0]
|
||||||
testName = testFile.split('.')[1]
|
testName = testFile.split('.')[1]
|
||||||
|
@ -111,4 +113,6 @@ if get_option('onlyOpenSource') == false
|
||||||
timeout: testTimeout,
|
timeout: testTimeout,
|
||||||
args : [ testFile, '--cycleType', 'Full'],
|
args : [ testFile, '--cycleType', 'Full'],
|
||||||
suite : [ testSuite ])
|
suite : [ testSuite ])
|
||||||
|
|
||||||
|
endif
|
||||||
endif
|
endif
|
Loading…
Reference in New Issue