mirror of
https://github.com/TomHarte/CLK.git
synced 2025-04-09 00:37:27 +00:00
Fixed collision tests, added a few more timing tests.
This commit is contained in:
parent
dd0f17130a
commit
6616265d93
@ -120,25 +120,25 @@ void Machine::get_output_pixel(uint8_t *pixel, int offset)
|
||||
ballPixel = (ballIndex >= 0 && ballIndex < ballSize && (_ballGraphicsEnable&2)) ? 1 : 0;
|
||||
|
||||
// accumulate collisions
|
||||
_collisions[0] |= ((missilePixels[0] | playerPixels[0]) << 6);
|
||||
_collisions[0] |= ((missilePixels[0] | playerPixels[1]) << 7);
|
||||
_collisions[1] |= ((missilePixels[1] | playerPixels[0]) << 6);
|
||||
_collisions[1] |= ((missilePixels[1] | playerPixels[1]) << 7);
|
||||
_collisions[0] |= ((missilePixels[0] & playerPixels[1]) << 7);
|
||||
_collisions[0] |= ((missilePixels[0] & playerPixels[0]) << 6);
|
||||
_collisions[1] |= ((missilePixels[1] & playerPixels[0]) << 7);
|
||||
_collisions[1] |= ((missilePixels[1] & playerPixels[1]) << 6);
|
||||
|
||||
_collisions[2] |= ((ballPixel | playerPixels[0]) << 6);
|
||||
_collisions[2] |= ((playfieldPixel | playerPixels[0]) << 7);
|
||||
_collisions[3] |= ((ballPixel | playerPixels[1]) << 6);
|
||||
_collisions[3] |= ((playfieldPixel | playerPixels[1]) << 7);
|
||||
_collisions[2] |= ((playfieldPixel & playerPixels[0]) << 7);
|
||||
_collisions[2] |= ((ballPixel & playerPixels[0]) << 6);
|
||||
_collisions[3] |= ((playfieldPixel & playerPixels[1]) << 7);
|
||||
_collisions[3] |= ((ballPixel & playerPixels[1]) << 6);
|
||||
|
||||
_collisions[4] |= ((ballPixel | missilePixels[0]) << 6);
|
||||
_collisions[4] |= ((playfieldPixel | missilePixels[0]) << 7);
|
||||
_collisions[5] |= ((ballPixel | missilePixels[1]) << 6);
|
||||
_collisions[5] |= ((playfieldPixel | missilePixels[1]) << 7);
|
||||
_collisions[4] |= ((playfieldPixel & missilePixels[0]) << 7);
|
||||
_collisions[4] |= ((ballPixel & missilePixels[0]) << 6);
|
||||
_collisions[5] |= ((playfieldPixel & missilePixels[1]) << 7);
|
||||
_collisions[5] |= ((ballPixel & missilePixels[1]) << 6);
|
||||
|
||||
_collisions[6] |= ((playfieldPixel | ballPixel) << 7);
|
||||
_collisions[6] |= ((playfieldPixel & ballPixel) << 7);
|
||||
|
||||
_collisions[7] |= ((playerPixels[0] | playerPixels[1]) << 7);
|
||||
_collisions[7] |= ((missilePixels[0] | missilePixels[1]) << 6);
|
||||
_collisions[7] |= ((playerPixels[0] & playerPixels[1]) << 7);
|
||||
_collisions[7] |= ((missilePixels[0] & missilePixels[1]) << 6);
|
||||
|
||||
// apply appropriate priority to pick a colour
|
||||
playfieldPixel |= ballPixel;
|
||||
@ -226,7 +226,7 @@ void Machine::output_pixels(int count)
|
||||
}
|
||||
}
|
||||
|
||||
if(_horizontalTimer < (_vBlankExtend ? 152 : 160))
|
||||
if(state == OutputState::Pixel)//_horizontalTimer < (_vBlankExtend ? 152 : 160))
|
||||
{
|
||||
if(_outputBuffer)
|
||||
get_output_pixel(&_outputBuffer[_lastOutputStateDuration * 4], 159 - _horizontalTimer);
|
||||
|
@ -14,8 +14,14 @@ class TimingTests: XCTestCase, CSTestMachineJamHandler {
|
||||
private var endTime: UInt32 = 0
|
||||
|
||||
func testImplied() {
|
||||
let code: [UInt8] = [0xea, 0x88, 0xca, CSTestMachineJamOpcode]
|
||||
self.runTest(code, expectedRunLength: 6)
|
||||
let code: [UInt8] = [
|
||||
0xea, // [2] NOP
|
||||
0x88, // [2] DEY
|
||||
0xca, // [2] DEX
|
||||
0x18, // [2] CLC
|
||||
0x2a, // [2] ROL A
|
||||
CSTestMachineJamOpcode]
|
||||
self.runTest(code, expectedRunLength: 10)
|
||||
}
|
||||
|
||||
func testLDA() {
|
||||
@ -62,6 +68,35 @@ class TimingTests: XCTestCase, CSTestMachineJamHandler {
|
||||
self.runTest(code, expectedRunLength: 31)
|
||||
}
|
||||
|
||||
func testJSR() {
|
||||
let code: [UInt8] = [
|
||||
0x20, 0x04, 0x02, // [6] JSR $0204
|
||||
CSTestMachineJamOpcode,
|
||||
0x60, // [6] RTS
|
||||
]
|
||||
self.runTest(code, expectedRunLength: 12)
|
||||
}
|
||||
|
||||
func testJMP() {
|
||||
let code: [UInt8] = [
|
||||
0x6c, 0x04, 0x00, // [5] JMP ($0004)
|
||||
0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x0b, 0x02, // [3] JMP 020b
|
||||
CSTestMachineJamOpcode,
|
||||
]
|
||||
self.runTest(code, expectedRunLength: 8)
|
||||
}
|
||||
|
||||
func testPHAPLA() {
|
||||
let code: [UInt8] = [
|
||||
0x48, // [3] PHA
|
||||
0x48, // [3] PHA
|
||||
0x68, // [4] PLA
|
||||
CSTestMachineJamOpcode,
|
||||
]
|
||||
self.runTest(code, expectedRunLength: 10)
|
||||
}
|
||||
|
||||
func testBCS() {
|
||||
let code: [UInt8] = [
|
||||
0x18, // [2] CLC
|
||||
@ -116,6 +151,8 @@ class TimingTests: XCTestCase, CSTestMachineJamHandler {
|
||||
machine.setValue(0x00, forAddress: 0x0001)
|
||||
machine.setValue(0xff, forAddress: 0x0002)
|
||||
machine.setValue(0x00, forAddress: 0x0003)
|
||||
machine.setValue(0x08, forAddress: 0x0004)
|
||||
machine.setValue(0x02, forAddress: 0x0005)
|
||||
machine.setValue(0x200, forRegister: CSTestMachineRegister.ProgramCounter)
|
||||
machine.setValue(0xff, forRegister: CSTestMachineRegister.X)
|
||||
machine.setValue(0xfe, forRegister: CSTestMachineRegister.Y)
|
||||
@ -130,7 +167,7 @@ class TimingTests: XCTestCase, CSTestMachineJamHandler {
|
||||
|
||||
func testMachine(machine: CSTestMachine!, didJamAtAddress address: UInt16) {
|
||||
if self.endTime == 0 {
|
||||
self.endTime = machine.timestamp - 7
|
||||
self.endTime = machine.timestamp - 9
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user