Clean out that stab at targeted cleanups
I needed to write way more code to get that working right
This commit is contained in:
parent
1dfbec0252
commit
634bdd884e
37
bun.c
37
bun.c
|
@ -419,42 +419,5 @@ void renderBunFrame(
|
||||||
hasBunClear[bunRenderer->activeScreenBufferDetails->currentBuffer] = 1;
|
hasBunClear[bunRenderer->activeScreenBufferDetails->currentBuffer] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void calculateNeededRedrawRanges(
|
|
||||||
int frame,
|
|
||||||
uint16_t redrawRanges[BUN_COUNT][4]
|
|
||||||
) {
|
|
||||||
int i, sx, sy, ex, ey, tmp;
|
|
||||||
|
|
||||||
int thisFrame = frame % FRAMES_FOR_SCREEN;
|
|
||||||
int lastFrame = (frame + FRAMES_FOR_SCREEN - 1) % FRAMES_FOR_SCREEN;
|
|
||||||
|
|
||||||
for (i = 0; i < BUN_COUNT; ++i) {
|
|
||||||
sx = allBunPositionsByFrame[lastFrame][i][0];
|
|
||||||
if (
|
|
||||||
allBunPositionsByFrame[lastFrame][i][1] <
|
|
||||||
allBunPositionsByFrame[thisFrame][i][1]
|
|
||||||
) {
|
|
||||||
sy = allBunPositionsByFrame[lastFrame][i][1];
|
|
||||||
ey = allBunPositionsByFrame[thisFrame][i][1] + COOL_BUN_HEIGHT;
|
|
||||||
} else {
|
|
||||||
sy = allBunPositionsByFrame[thisFrame][i][1];
|
|
||||||
ey = allBunPositionsByFrame[lastFrame][i][1] + COOL_BUN_HEIGHT;
|
|
||||||
}
|
|
||||||
|
|
||||||
ex = allBunPositionsByFrame[thisFrame][i][0] + COOL_BUN_WIDTH;
|
|
||||||
|
|
||||||
if (sx > ex) {
|
|
||||||
tmp = sx;
|
|
||||||
sx = ex;
|
|
||||||
ex = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
redrawRanges[i][0] = sx;
|
|
||||||
redrawRanges[i][1] = sy;
|
|
||||||
redrawRanges[i][2] = ex;
|
|
||||||
redrawRanges[i][3] = ey;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void teardownBunRenderer() {
|
void teardownBunRenderer() {
|
||||||
}
|
}
|
||||||
|
|
266
main.c
266
main.c
|
@ -94,6 +94,7 @@ void renderTopaz(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MOSTLY_TOPAZ_TOP_BOTTOM_CROP (30)
|
||||||
|
|
||||||
void renderMostlyTopaz(void) {
|
void renderMostlyTopaz(void) {
|
||||||
int plane;
|
int plane;
|
||||||
|
@ -110,15 +111,15 @@ void renderMostlyTopaz(void) {
|
||||||
custom.bltcon1 = 0;
|
custom.bltcon1 = 0;
|
||||||
custom.bltafwm = 0xffff;
|
custom.bltafwm = 0xffff;
|
||||||
custom.bltalwm = 0xffff;
|
custom.bltalwm = 0xffff;
|
||||||
custom.bltapt = MaskBitplane + (30 * TOPAZ_WIDTH_BYTES);
|
custom.bltapt = MaskBitplane + (MOSTLY_TOPAZ_TOP_BOTTOM_CROP * TOPAZ_WIDTH_BYTES);
|
||||||
custom.bltbpt = bltbpt + (30 * TOPAZ_WIDTH_BYTES);
|
custom.bltbpt = bltbpt + (MOSTLY_TOPAZ_TOP_BOTTOM_CROP * TOPAZ_WIDTH_BYTES);
|
||||||
custom.bltcpt = 30 * screenDefinition.byteWidth + activeScreenBufferDetails.planes[plane] + 8;
|
custom.bltcpt = MOSTLY_TOPAZ_TOP_BOTTOM_CROP * screenDefinition.byteWidth + activeScreenBufferDetails.planes[plane] + 8;
|
||||||
custom.bltdpt = 30 * screenDefinition.byteWidth + activeScreenBufferDetails.planes[plane] + 8;
|
custom.bltdpt = MOSTLY_TOPAZ_TOP_BOTTOM_CROP * screenDefinition.byteWidth + activeScreenBufferDetails.planes[plane] + 8;
|
||||||
custom.bltamod = 0;
|
custom.bltamod = 0;
|
||||||
custom.bltbmod = 0;
|
custom.bltbmod = 0;
|
||||||
custom.bltcmod = bltcmod;
|
custom.bltcmod = bltcmod;
|
||||||
custom.bltdmod = bltcmod;
|
custom.bltdmod = bltcmod;
|
||||||
custom.bltsize = BLTSIZE(TOPAZ_WIDTH_WORDS, 196);
|
custom.bltsize = BLTSIZE(TOPAZ_WIDTH_WORDS, 256 - MOSTLY_TOPAZ_TOP_BOTTOM_CROP * 2);
|
||||||
|
|
||||||
bltbpt += TOPAZ_WIDTH_BYTES * 256;
|
bltbpt += TOPAZ_WIDTH_BYTES * 256;
|
||||||
|
|
||||||
|
@ -213,189 +214,13 @@ void buildCopperlist(void) {
|
||||||
endCopperlist(currentCopperlist);
|
endCopperlist(currentCopperlist);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t renderPartialAreas[BUN_COUNT][5];
|
|
||||||
|
|
||||||
void calculateTopazRenderPartialAreas(
|
|
||||||
uint16_t redrawRanges[BUN_COUNT][4]
|
|
||||||
) {
|
|
||||||
int topazX;
|
|
||||||
uint16_t i, width, height, screenX;
|
|
||||||
|
|
||||||
for (i = 0; i < BUN_COUNT; ++i) {
|
|
||||||
renderPartialAreas[i][0] = 0;
|
|
||||||
|
|
||||||
if (redrawRanges[i][2] - redrawRanges[i][0] < TOPAZ_WIDTH_PIXELS) {
|
|
||||||
if (
|
|
||||||
(redrawRanges[i][2] > 64 && redrawRanges[i][0] < (64 + TOPAZ_WIDTH_PIXELS)) ||
|
|
||||||
(redrawRanges[i][0] < (64 + TOPAZ_WIDTH_PIXELS) && redrawRanges[i][2] > 64)
|
|
||||||
) {
|
|
||||||
width = redrawRanges[i][2] - redrawRanges[i][0] + 16;
|
|
||||||
height = redrawRanges[i][3] - redrawRanges[i][1];
|
|
||||||
topazX = redrawRanges[i][0] - 64;
|
|
||||||
screenX = redrawRanges[i][0];
|
|
||||||
|
|
||||||
if (topazX < 0) {
|
|
||||||
//printf("Too far left, adjusting...\n");
|
|
||||||
topazX += 16;
|
|
||||||
screenX += 16;
|
|
||||||
width -= 16;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (topazX + width > 64 + TOPAZ_WIDTH_PIXELS) {
|
|
||||||
//printf("Too far right, adjusting...\n");
|
|
||||||
width -= 16;
|
|
||||||
}
|
|
||||||
|
|
||||||
renderPartialAreas[i][0] = width;
|
|
||||||
renderPartialAreas[i][1] = height;
|
|
||||||
renderPartialAreas[i][2] = topazX;
|
|
||||||
renderPartialAreas[i][3] = screenX;
|
|
||||||
renderPartialAreas[i][4] = redrawRanges[i][1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void calculateTopazRenderPartialBlitterSettings() {
|
|
||||||
uint16_t bltapt, bltcpt, bltamod, bltcmod, bltsize;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < BUN_COUNT; ++i) {
|
|
||||||
if (renderPartialAreas[i][0] == 0) continue;
|
|
||||||
bltapt = renderPartialAreas[i][4] * TOPAZ_WIDTH_BYTES + (renderPartialAreas[i][2] >> 4) * 2;
|
|
||||||
bltcpt = renderPartialAreas[i][4] * screenDefinition.byteWidth + (renderPartialAreas[i][3] >> 4) * 2;
|
|
||||||
|
|
||||||
printf("%d, %d\n", screenDefinition.byteWidth, renderPartialAreas[i][0]);
|
|
||||||
|
|
||||||
bltamod = TOPAZ_WIDTH_BYTES - (renderPartialAreas[i][0] >> 4) * 2;
|
|
||||||
bltcmod = screenDefinition.byteWidth - (renderPartialAreas[i][0] >> 4) * 2;
|
|
||||||
|
|
||||||
bltsize = BLTSIZE((renderPartialAreas[i][0] >> 4), renderPartialAreas[i][1]);
|
|
||||||
|
|
||||||
renderPartialAreas[i][0] = bltapt;
|
|
||||||
renderPartialAreas[i][1] = bltcpt;
|
|
||||||
renderPartialAreas[i][2] = bltamod;
|
|
||||||
renderPartialAreas[i][3] = bltcmod;
|
|
||||||
renderPartialAreas[i][4] = bltsize;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void renderTopazPartials(
|
|
||||||
uint16_t redrawRanges[BUN_COUNT][4]
|
|
||||||
) {
|
|
||||||
int plane, i, topazX, screenX;
|
|
||||||
|
|
||||||
uint16_t bltcon0;
|
|
||||||
uint16_t bltamod, bltbmod, bltcmod, bltdmod;
|
|
||||||
uint16_t width, height, bltsize;
|
|
||||||
uint32_t bltapt, bltbpt, bltcpt, bltdpt;
|
|
||||||
|
|
||||||
bltcon0 = 0xca + (1 << 8) + (1 << 9) + (1 << 10) + (1 << 11);
|
|
||||||
|
|
||||||
WaitTOF();
|
|
||||||
|
|
||||||
for (i = 0; i < BUN_COUNT; ++i) {
|
|
||||||
if (redrawRanges[i][2] - redrawRanges[i][0] < TOPAZ_WIDTH_PIXELS) {
|
|
||||||
if (
|
|
||||||
(redrawRanges[i][2] > 64 && redrawRanges[i][0] < (64 + TOPAZ_WIDTH_PIXELS)) ||
|
|
||||||
(redrawRanges[i][0] < (64 + TOPAZ_WIDTH_PIXELS) && redrawRanges[i][2] > 64)
|
|
||||||
) {
|
|
||||||
width = redrawRanges[i][2] - redrawRanges[i][0] + 16;
|
|
||||||
height = redrawRanges[i][3] - redrawRanges[i][1];
|
|
||||||
topazX = redrawRanges[i][0] - 64;
|
|
||||||
screenX = redrawRanges[i][0];
|
|
||||||
|
|
||||||
if (topazX < 0) {
|
|
||||||
//printf("Too far left, adjusting...\n");
|
|
||||||
topazX += 16;
|
|
||||||
screenX += 16;
|
|
||||||
width -= 16;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (topazX + width > 64 + TOPAZ_WIDTH_PIXELS) {
|
|
||||||
//printf("Too far right, adjusting...\n");
|
|
||||||
width -= 16;
|
|
||||||
}
|
|
||||||
|
|
||||||
bltapt = redrawRanges[i][1] * TOPAZ_WIDTH_BYTES + (topazX >> 4) * 2;
|
|
||||||
bltbpt = bltapt;
|
|
||||||
bltcpt = redrawRanges[i][1] * screenDefinition.byteWidth + (screenX >> 4) * 2;
|
|
||||||
bltdpt = bltcpt;
|
|
||||||
|
|
||||||
bltamod = TOPAZ_WIDTH_BYTES - (width >> 4) * 2;
|
|
||||||
bltbmod = bltamod;
|
|
||||||
bltcmod = screenDefinition.byteWidth - (width >> 4) * 2;
|
|
||||||
bltdmod = bltcmod;
|
|
||||||
|
|
||||||
bltsize = BLTSIZE((width >> 4), height);
|
|
||||||
/*
|
|
||||||
|
|
||||||
printf(
|
|
||||||
"Coords: %d, %d -> %d, %d\n",
|
|
||||||
redrawRanges[i][0],
|
|
||||||
redrawRanges[i][1],
|
|
||||||
redrawRanges[i][2],
|
|
||||||
redrawRanges[i][3]
|
|
||||||
);
|
|
||||||
|
|
||||||
printf("topazX: %d\n", topazX);
|
|
||||||
printf("width: %d\n", width);
|
|
||||||
|
|
||||||
printf("MaskBitplane: %d\n", MaskBitplane);
|
|
||||||
printf("TopazBitplanes: %d\n", TopazBitplanes);
|
|
||||||
printf("ActiveScreenBuffer Plane 0: %d\n", activeScreenBufferDetails.planes[0]);
|
|
||||||
|
|
||||||
printf("BLTAPT: %d\n", bltapt);
|
|
||||||
printf("BLTAPT src: %d\n", bltapt + (uint32_t)MaskBitplane);
|
|
||||||
printf("BLTBPT: %d\n", bltbpt);
|
|
||||||
printf("BLTBPT src: %d\n", bltbpt + (uint32_t)TopazBitplanes);
|
|
||||||
printf("BLTCPT: %d\n", bltcpt);
|
|
||||||
printf("BLTCPT src: %d\n", bltcpt + (uint32_t)activeScreenBufferDetails.planes[0] + 8);
|
|
||||||
printf("BLTDPT: %d\n", bltdpt);
|
|
||||||
printf("BLTDPT src: %d\n", bltdpt + (uint32_t)activeScreenBufferDetails.planes[0] + 8);
|
|
||||||
|
|
||||||
printf("BLTAMOD: %d\n", bltamod);
|
|
||||||
printf("BLTBMOD: %d\n", bltbmod);
|
|
||||||
printf("BLTCMOD: %d\n", bltcmod);
|
|
||||||
printf("BLTDMOD: %d\n", bltdmod);
|
|
||||||
|
|
||||||
printf("BLTSIZE: %d, %d\n", (width >> 4), height);
|
|
||||||
*/
|
|
||||||
|
|
||||||
bltapt += (uint32_t)MaskBitplane;
|
|
||||||
bltbpt += (uint32_t)TopazBitplanes;
|
|
||||||
|
|
||||||
for (plane = 0; plane < 2; ++plane) {
|
|
||||||
custom.bltcon0 = bltcon0;
|
|
||||||
custom.bltcon1 = 0;
|
|
||||||
custom.bltafwm = 0xffff;
|
|
||||||
custom.bltalwm = 0xffff;
|
|
||||||
custom.bltapt = bltapt;
|
|
||||||
custom.bltbpt = bltbpt + (plane * TOPAZ_WIDTH_BYTES * 256);
|
|
||||||
custom.bltcpt = bltcpt + activeScreenBufferDetails.planes[plane];
|
|
||||||
custom.bltdpt = bltdpt + activeScreenBufferDetails.planes[plane];
|
|
||||||
custom.bltamod = bltamod;
|
|
||||||
custom.bltbmod = bltbmod;
|
|
||||||
custom.bltcmod = bltcmod;
|
|
||||||
custom.bltdmod = bltdmod;
|
|
||||||
custom.bltsize = bltsize;
|
|
||||||
|
|
||||||
WaitBlit();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct MsgPort *keyboardMessagePort = NULL;
|
static struct MsgPort *keyboardMessagePort = NULL;
|
||||||
static struct IOStdReq *keyboardIO = NULL;
|
static struct IOStdReq *keyboardIO = NULL;
|
||||||
static struct Interrupt keyboardInterrupt;
|
static struct Interrupt keyboardInterrupt;
|
||||||
|
|
||||||
extern far ULONG keyboardPressed;
|
extern far ULONG keyboardPressed;
|
||||||
|
|
||||||
extern struct InputEvent * __asm stupidKeyboardHandler(
|
extern struct InputEvent * __asm KeyboardHandler(
|
||||||
register __a0 struct InputEvent *input,
|
register __a0 struct InputEvent *input,
|
||||||
register __a1 APTR id
|
register __a1 APTR id
|
||||||
);
|
);
|
||||||
|
@ -416,7 +241,7 @@ void setupKeyboard(void) {
|
||||||
keyboardInterrupt.is_Node.ln_Type = NT_INTERRUPT;
|
keyboardInterrupt.is_Node.ln_Type = NT_INTERRUPT;
|
||||||
keyboardInterrupt.is_Node.ln_Pri = 100;
|
keyboardInterrupt.is_Node.ln_Pri = 100;
|
||||||
keyboardInterrupt.is_Node.ln_Name = (STRPTR)"cool bun";
|
keyboardInterrupt.is_Node.ln_Name = (STRPTR)"cool bun";
|
||||||
keyboardInterrupt.is_Code = (void (*)())&stupidKeyboardHandler;
|
keyboardInterrupt.is_Code = (void (*)())&KeyboardHandler;
|
||||||
|
|
||||||
keyboardIO->io_Data = (void *)&keyboardInterrupt;
|
keyboardIO->io_Data = (void *)&keyboardInterrupt;
|
||||||
keyboardIO->io_Command = IND_ADDHANDLER;
|
keyboardIO->io_Command = IND_ADDHANDLER;
|
||||||
|
@ -449,62 +274,6 @@ int main(void) {
|
||||||
struct BunRenderer bunRenderer;
|
struct BunRenderer bunRenderer;
|
||||||
uint16_t redrawRanges[BUN_COUNT][4];
|
uint16_t redrawRanges[BUN_COUNT][4];
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
allocateDoubleBufferedScreenMemory(
|
|
||||||
&screenDefinition,
|
|
||||||
&activeScreenBufferDetails,
|
|
||||||
SCREEN_WIDTH,
|
|
||||||
SCREEN_HEIGHT,
|
|
||||||
3
|
|
||||||
);
|
|
||||||
|
|
||||||
setupBunRenderer(
|
|
||||||
&bunRenderer,
|
|
||||||
&screenDefinition,
|
|
||||||
&activeScreenBufferDetails
|
|
||||||
);
|
|
||||||
|
|
||||||
calculateNeededRedrawRanges(i, redrawRanges);
|
|
||||||
calculateTopazRenderPartialAreas(redrawRanges);
|
|
||||||
|
|
||||||
printf("********\n");
|
|
||||||
|
|
||||||
for (i = 0; i < BUN_COUNT; ++i) {
|
|
||||||
if (renderPartialAreas[i][0] == 0) continue;
|
|
||||||
|
|
||||||
printf(
|
|
||||||
"%d, %d, %d, %d, %d\n",
|
|
||||||
renderPartialAreas[i][0],
|
|
||||||
renderPartialAreas[i][1],
|
|
||||||
renderPartialAreas[i][2],
|
|
||||||
renderPartialAreas[i][3],
|
|
||||||
renderPartialAreas[i][4]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
calculateTopazRenderPartialBlitterSettings();
|
|
||||||
|
|
||||||
printf("********\n");
|
|
||||||
|
|
||||||
for (i = 0; i < BUN_COUNT; ++i) {
|
|
||||||
if (renderPartialAreas[i][0] == 0) continue;
|
|
||||||
|
|
||||||
printf(
|
|
||||||
"%d, %d, %d, %d, %x\n",
|
|
||||||
renderPartialAreas[i][0],
|
|
||||||
renderPartialAreas[i][1],
|
|
||||||
renderPartialAreas[i][2],
|
|
||||||
renderPartialAreas[i][3],
|
|
||||||
renderPartialAreas[i][4]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
teardownScreen(&screenDefinition);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
*/
|
|
||||||
|
|
||||||
printf("\nCool bun blitter, copper, and sprite demo by John Bintz\n");
|
printf("\nCool bun blitter, copper, and sprite demo by John Bintz\n");
|
||||||
printf("\n");
|
printf("\n");
|
||||||
printf("This is my first real go at writing graphics code for the Amiga.\n");
|
printf("This is my first real go at writing graphics code for the Amiga.\n");
|
||||||
|
@ -543,8 +312,6 @@ int main(void) {
|
||||||
|
|
||||||
buildCopperlist();
|
buildCopperlist();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
copperlist debugging
|
copperlist debugging
|
||||||
for (i = 0; i < 20; ++i) {
|
for (i = 0; i < 20; ++i) {
|
||||||
|
@ -581,32 +348,17 @@ int main(void) {
|
||||||
|
|
||||||
swapCurrentScreenBuffer(&screenDefinition, &activeScreenBufferDetails);
|
swapCurrentScreenBuffer(&screenDefinition, &activeScreenBufferDetails);
|
||||||
|
|
||||||
|
|
||||||
clearCurrentBuns(&bunRenderer);
|
clearCurrentBuns(&bunRenderer);
|
||||||
renderBunFrame(i, &bunRenderer);
|
renderBunFrame(i, &bunRenderer);
|
||||||
|
|
||||||
/*
|
|
||||||
calculateNeededRedrawRanges(i, redrawRanges);
|
|
||||||
renderTopazPartials(redrawRanges);
|
|
||||||
*/
|
|
||||||
renderMostlyTopaz();
|
renderMostlyTopaz();
|
||||||
|
|
||||||
//WaitTOF();
|
|
||||||
|
|
||||||
|
|
||||||
updateDisplayInCopperList(
|
updateDisplayInCopperList(
|
||||||
&screenDefinition,
|
&screenDefinition,
|
||||||
&activeScreenBufferDetails,
|
&activeScreenBufferDetails,
|
||||||
copperlistBitplanePointers
|
copperlistBitplanePointers
|
||||||
);
|
);
|
||||||
|
|
||||||
//WaitBOF(100);
|
if (keyboardPressed) break;
|
||||||
|
|
||||||
//WaitTOF();
|
|
||||||
|
|
||||||
if (keyboardPressed) {
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
if ((ciaa.ciapra >> 6) != 3) break;
|
if ((ciaa.ciapra >> 6) != 3) break;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
XDEF _endCopperlist
|
XDEF _endCopperlist
|
||||||
XDEF _myWaitBlit
|
XDEF _myWaitBlit
|
||||||
XDEF _WaitBOF
|
XDEF _WaitBOF
|
||||||
XDEF _stupidKeyboardHandler
|
XDEF _KeyboardHandler
|
||||||
|
|
||||||
XDEF _keyboardPressed
|
XDEF _keyboardPressed
|
||||||
|
|
||||||
|
@ -82,14 +82,14 @@ SOFFSET SET SOFFSET+(8*4)
|
||||||
; @register A0 struct InputEvent *
|
; @register A0 struct InputEvent *
|
||||||
; @register A1 extra data about the event
|
; @register A1 extra data about the event
|
||||||
; @output D0 The value of A0
|
; @output D0 The value of A0
|
||||||
_stupidKeyboardHandler:
|
_KeyboardHandler:
|
||||||
; @stack [RA,A0,current node]
|
; @stack [RA,A0,current node]
|
||||||
MOVE.L A0,-(SP)
|
MOVE.L A0,-(SP)
|
||||||
MOVE.L #0,-(SP)
|
MOVE.L #0,-(SP)
|
||||||
|
|
||||||
_stupidKeyboardHandler_CheckLoop:
|
_KeyboardHandler_CheckLoop:
|
||||||
CMP.B #IECLASS_RAWKEY,ie_Class(A0)
|
CMP.B #IECLASS_RAWKEY,ie_Class(A0)
|
||||||
BNE.S _stupidKeyboardHandler_NextEvent
|
BNE.S _KeyboardHandler_NextEvent
|
||||||
|
|
||||||
MOVE.W ie_Code(A0),D0
|
MOVE.W ie_Code(A0),D0
|
||||||
AND.W #IECODE_UP_PREFIX,D0
|
AND.W #IECODE_UP_PREFIX,D0
|
||||||
|
@ -100,12 +100,12 @@ _stupidKeyboardHandler_CheckLoop:
|
||||||
; else:
|
; else:
|
||||||
; change the A0 in the stack above it
|
; change the A0 in the stack above it
|
||||||
TST.L (SP)
|
TST.L (SP)
|
||||||
BNE.S _stupidKeyboardHandler_hasLastEvent
|
BNE.S _KeyboardHandler_hasLastEvent
|
||||||
|
|
||||||
MOVE.L (A0),4(SP)
|
MOVE.L (A0),4(SP)
|
||||||
BRA.S _stupidKeyboardHandler_NextEvent
|
BRA.S _KeyboardHandler_NextEvent
|
||||||
|
|
||||||
_stupidKeyboardHandler_hasLastEvent:
|
_KeyboardHandler_hasLastEvent:
|
||||||
; put the next event in the first pointer of the
|
; put the next event in the first pointer of the
|
||||||
; last event
|
; last event
|
||||||
MOVE.L A1,-(SP)
|
MOVE.L A1,-(SP)
|
||||||
|
@ -113,14 +113,14 @@ _stupidKeyboardHandler_hasLastEvent:
|
||||||
MOVE.L (A0),(A1)
|
MOVE.L (A0),(A1)
|
||||||
MOVE.L (SP)+,A1
|
MOVE.L (SP)+,A1
|
||||||
|
|
||||||
_stupidKeyboardHandler_NextEvent:
|
_KeyboardHandler_NextEvent:
|
||||||
; next event is in first long of struct
|
; next event is in first long of struct
|
||||||
MOVE.L (A0),D0
|
MOVE.L (A0),D0
|
||||||
; store current node in stack
|
; store current node in stack
|
||||||
MOVE.L A0,(SP)
|
MOVE.L A0,(SP)
|
||||||
|
|
||||||
MOVE.L D0,A0
|
MOVE.L D0,A0
|
||||||
BNE.S _stupidKeyboardHandler_CheckLoop
|
BNE.S _KeyboardHandler_CheckLoop
|
||||||
MOVE.L (SP)+,D0
|
MOVE.L (SP)+,D0
|
||||||
MOVE.L (SP)+,D0
|
MOVE.L (SP)+,D0
|
||||||
RTS
|
RTS
|
||||||
|
|
Loading…
Reference in New Issue