Fix uninitialized interrupt flag in linux builds
This commit is contained in:
parent
2f009f129e
commit
42f71e264e
|
@ -8205,7 +8205,7 @@ InterCodeProcedure::InterCodeProcedure(InterCodeModule * mod, const Location & l
|
||||||
mRenameTable(-1), mRenameUnionTable(-1), mGlobalRenameTable(-1),
|
mRenameTable(-1), mRenameUnionTable(-1), mGlobalRenameTable(-1),
|
||||||
mValueForwardingTable(nullptr), mLocalVars(nullptr), mParamVars(nullptr), mModule(mod),
|
mValueForwardingTable(nullptr), mLocalVars(nullptr), mParamVars(nullptr), mModule(mod),
|
||||||
mIdent(ident), mLinkerObject(linkerObject),
|
mIdent(ident), mLinkerObject(linkerObject),
|
||||||
mNativeProcedure(false), mLeafProcedure(false), mCallsFunctionPointer(false), mCalledFunctions(nullptr), mFastCallProcedure(false), mInterrupt(false)
|
mNativeProcedure(false), mLeafProcedure(false), mCallsFunctionPointer(false), mCalledFunctions(nullptr), mFastCallProcedure(false), mInterrupt(false), mHardwareInterrupt(false)
|
||||||
{
|
{
|
||||||
mID = mModule->mProcedures.Size();
|
mID = mModule->mProcedures.Size();
|
||||||
mModule->mProcedures.Push(this);
|
mModule->mProcedures.Push(this);
|
||||||
|
|
|
@ -335,12 +335,12 @@ void Linker::Link(void)
|
||||||
if (obj->mType == LOT_SECTION_START)
|
if (obj->mType == LOT_SECTION_START)
|
||||||
{
|
{
|
||||||
obj->mAddress = obj->mSection->mStart;
|
obj->mAddress = obj->mSection->mStart;
|
||||||
obj->mRefAddress = obj->mAddress + obj->mRegion->mReloc;
|
obj->mRefAddress = obj->mAddress + (obj->mRegion ? obj->mRegion->mReloc : 0);
|
||||||
}
|
}
|
||||||
else if (obj->mType == LOT_SECTION_END)
|
else if (obj->mType == LOT_SECTION_END)
|
||||||
{
|
{
|
||||||
obj->mAddress = obj->mSection->mEnd;
|
obj->mAddress = obj->mSection->mEnd;
|
||||||
obj->mRefAddress = obj->mAddress + obj->mRegion->mReloc;
|
obj->mRefAddress = obj->mAddress + (obj->mRegion ? obj->mRegion->mReloc : 0);
|
||||||
}
|
}
|
||||||
else if (obj->mFlags & LOBJF_REFERENCED)
|
else if (obj->mFlags & LOBJF_REFERENCED)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <c64/sprites.h>
|
#include <c64/sprites.h>
|
||||||
#include <c64/memmap.h>
|
#include <c64/memmap.h>
|
||||||
#include <c64/rasterirq.h>
|
#include <c64/rasterirq.h>
|
||||||
|
#include <c64/sid.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -25,7 +26,7 @@ byte * const Sprites = (byte *)0xd800;
|
||||||
unsigned flashingBricks[32];
|
unsigned flashingBricks[32];
|
||||||
char numFlashingBricks[4];
|
char numFlashingBricks[4];
|
||||||
|
|
||||||
void brick_put(char x, char y, char c)
|
void brick_put(char x, char y, char b, char c)
|
||||||
{
|
{
|
||||||
char * cp = Color + 40 * y + x;
|
char * cp = Color + 40 * y + x;
|
||||||
|
|
||||||
|
@ -41,13 +42,13 @@ void brick_put(char x, char y, char c)
|
||||||
|
|
||||||
char * sp = Screen + 40 * y + x;
|
char * sp = Screen + 40 * y + x;
|
||||||
|
|
||||||
sp[ 0] = 128;
|
sp[ 0] = b | 0;
|
||||||
sp[ 1] = 129;
|
sp[ 1] = b | 1;
|
||||||
sp[ 2] = 130;
|
sp[ 2] = b | 2;
|
||||||
|
|
||||||
sp[40] = 131;
|
sp[40] = b | 3;
|
||||||
sp[41] = 132;
|
sp[41] = b | 4;
|
||||||
sp[42] = 133;
|
sp[42] = b | 5;
|
||||||
sp[43] = 103 - (x & 1) - 2 * (y & 1);
|
sp[43] = 103 - (x & 1) - 2 * (y & 1);
|
||||||
|
|
||||||
sp[81] = 101 - (x & 1) + 2 * (y & 1);
|
sp[81] = 101 - (x & 1) + 2 * (y & 1);
|
||||||
|
@ -61,7 +62,7 @@ void brick_init(void)
|
||||||
{
|
{
|
||||||
for(char x=0; x<40; x++)
|
for(char x=0; x<40; x++)
|
||||||
{
|
{
|
||||||
Screen[40 * y + x] = 96 + (x & 1) + 2 * (y & 1) + 4 * (x == 0 || y == 0);
|
Screen[40 * y + x] = 96 + (x & 1) + 2 * (y & 1);// + 4 * (x == 0 || y == 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +70,7 @@ void brick_init(void)
|
||||||
{
|
{
|
||||||
for(char x=0; x<12; x++)
|
for(char x=0; x<12; x++)
|
||||||
{
|
{
|
||||||
brick_put(3 * x + 2, 2 * y + 1, 8 + y);
|
brick_put(3 * x + 2, 2 * y + 1, 128 + (x / 4) * 8, 8 + y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -220,6 +221,44 @@ void ball_lost(Ball * ball)
|
||||||
|
|
||||||
int paddlex, paddlevx;
|
int paddlex, paddlevx;
|
||||||
|
|
||||||
|
char sound_index;
|
||||||
|
|
||||||
|
void sound_trigger(void)
|
||||||
|
{
|
||||||
|
if (sound_index == 5 || sound_index == 0)
|
||||||
|
sound_index = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sound_loop(void)
|
||||||
|
{
|
||||||
|
switch (sound_index)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
sid.voices[0].attdec = 0;
|
||||||
|
sid.voices[0].susrel = 0;
|
||||||
|
sid.voices[0].ctrl = 0;
|
||||||
|
sound_index++;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
sid.voices[0].ctrl = SID_CTRL_TEST;
|
||||||
|
sound_index++;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
sid.voices[0].freq = NOTE_D(8);
|
||||||
|
sid.voices[0].attdec = SID_ATK_2 | SID_DKY_6;
|
||||||
|
sid.voices[0].susrel = SID_DKY_300 | 0xf0;
|
||||||
|
sid.voices[0].ctrl = SID_CTRL_SAW | SID_CTRL_GATE;
|
||||||
|
sound_index++;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
sound_index++;
|
||||||
|
sid.voices[0].ctrl = SID_CTRL_SAW;
|
||||||
|
|
||||||
|
default:
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ball_loop(Ball * ball)
|
void ball_loop(Ball * ball)
|
||||||
{
|
{
|
||||||
if (!ball->active)
|
if (!ball->active)
|
||||||
|
@ -268,6 +307,7 @@ void ball_loop(Ball * ball)
|
||||||
if (x0 >= 0 && x1 < 40 && y0 >= 0 && y1 < 24)
|
if (x0 >= 0 && x1 < 40 && y0 >= 0 && y1 < 24)
|
||||||
{
|
{
|
||||||
char col = 0;
|
char col = 0;
|
||||||
|
bool hit = false;
|
||||||
|
|
||||||
if (Screen[40 * y0 + x0] >= 128) col |= COL_00;
|
if (Screen[40 * y0 + x0] >= 128) col |= COL_00;
|
||||||
if (Screen[40 * y0 + x1] >= 128) col |= COL_01;
|
if (Screen[40 * y0 + x1] >= 128) col |= COL_01;
|
||||||
|
@ -275,14 +315,26 @@ void ball_loop(Ball * ball)
|
||||||
if (Screen[40 * y1 + x1] >= 128) col |= COL_11;
|
if (Screen[40 * y1 + x1] >= 128) col |= COL_11;
|
||||||
|
|
||||||
if (ball->vx < 0 && ((col & (COL_00 | COL_01)) == COL_00) || ((col & (COL_10 | COL_11)) == COL_10))
|
if (ball->vx < 0 && ((col & (COL_00 | COL_01)) == COL_00) || ((col & (COL_10 | COL_11)) == COL_10))
|
||||||
|
{
|
||||||
mirrorX = true;
|
mirrorX = true;
|
||||||
|
hit = true;
|
||||||
|
}
|
||||||
else if (ball->vx > 0 && ((col & (COL_00 | COL_01)) == COL_01) || ((col & (COL_10 | COL_11)) == COL_11))
|
else if (ball->vx > 0 && ((col & (COL_00 | COL_01)) == COL_01) || ((col & (COL_10 | COL_11)) == COL_11))
|
||||||
|
{
|
||||||
mirrorX = true;
|
mirrorX = true;
|
||||||
|
hit = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (ball->vy < 0 && ((col & (COL_00 | COL_10)) == COL_00) || ((col & (COL_01 | COL_11)) == COL_01))
|
if (ball->vy < 0 && ((col & (COL_00 | COL_10)) == COL_00) || ((col & (COL_01 | COL_11)) == COL_01))
|
||||||
|
{
|
||||||
mirrorY = true;
|
mirrorY = true;
|
||||||
|
hit = true;
|
||||||
|
}
|
||||||
else if (ball->vy > 0 && ((col & (COL_00 | COL_10)) == COL_10) || ((col & (COL_01 | COL_11)) == COL_11))
|
else if (ball->vy > 0 && ((col & (COL_00 | COL_10)) == COL_10) || ((col & (COL_01 | COL_11)) == COL_11))
|
||||||
|
{
|
||||||
mirrorY = true;
|
mirrorY = true;
|
||||||
|
hit = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (col)
|
if (col)
|
||||||
{
|
{
|
||||||
|
@ -291,6 +343,11 @@ void ball_loop(Ball * ball)
|
||||||
brick_hit(x0, y1);
|
brick_hit(x0, y1);
|
||||||
brick_hit(x1, y1);
|
brick_hit(x1, y1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hit)
|
||||||
|
{
|
||||||
|
sound_trigger();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mirrorY)
|
if (mirrorY)
|
||||||
|
@ -473,16 +530,20 @@ int main(void)
|
||||||
|
|
||||||
game_state(GS_READY);
|
game_state(GS_READY);
|
||||||
|
|
||||||
|
sid.fmodevol = 15;
|
||||||
|
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
brick_animate();
|
brick_animate();
|
||||||
game_loop();
|
game_loop();
|
||||||
|
sound_loop();
|
||||||
vic_waitFrame();
|
vic_waitFrame();
|
||||||
|
|
||||||
for(char j=0; j<1; j++)
|
for(char j=0; j<1; j++)
|
||||||
ball_move(TheGame.balls + j);
|
ball_move(TheGame.balls + j);
|
||||||
paddle_move();
|
paddle_move();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue