From 2a420f6f4f441d38e2f99aecc039bf20a113dc29 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Sun, 2 Jun 2024 16:03:16 -0400 Subject: [PATCH] starting on sprites --- bun.c | 6 ++-- main | Bin 15452 -> 21276 bytes main.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++-- system/copper.c | 2 +- system/system.s | 4 +-- 5 files changed, 79 insertions(+), 9 deletions(-) diff --git a/bun.c b/bun.c index 999e930..028bfb3 100644 --- a/bun.c +++ b/bun.c @@ -42,7 +42,7 @@ // linked as raw bytes in assembler extern unsigned char far coolbun[]; -unsigned char *coolbunArea; +unsigned char *coolbunArea = 0; #define BLTCON0( \ minterm, aChan, bChan, cChan, dChan, shift \ @@ -62,7 +62,9 @@ void setupBun(void) { } void teardownBun(void) { - FreeMem(coolbunArea, COOL_BUN_MEMORY_SIZE); + if (coolbunArea) { + FreeMem(coolbunArea, COOL_BUN_MEMORY_SIZE); + } } void bun_offRightSide( diff --git a/main b/main index 0814c45a0204c7a9a4a4d3613bc4d0033fdc42e9..b4cfa8d4e128f79ea428296b2f07b79923bec50e 100755 GIT binary patch delta 10587 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 delta 5147 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 IiO$gf0i|NL=>Px# diff --git a/main.c b/main.c index bb4be2b..195790a 100644 --- a/main.c +++ b/main.c @@ -36,10 +36,31 @@ void *copperlistSpritePointers[8]; #define offsetof(s, m) &((struct s *)0)->m uint16_t custom_color = (uint16_t)offsetof(Custom, color); uint16_t custom_sprite = (uint16_t)offsetof(Custom, sprpt); +uint16_t custom_sprite_control = (uint16_t)offsetof(Custom, spr); + +uint16_t chip spriteData[200]; + +uint16_t spritePositionsEachLine[256][2]; + +void calculageSpritePositionsEachLine() { + int i; + + for (i = 0; i < 255; ++i) { + + } +} + +#define SPRPOS(x, y) (((y & 0xff) << 8) + ((x & 0x1fe) >> 1)) +#define SPRCTL(x, y, height) ( \ + ((height & 0xff) << 8) + \ + ((y & 0x100) >> 6) + \ + ((height & 0x100) >> 7) + \ + (x & 1) \ +) int main(void) { uint16_t *copperlist, *currentCopperlist, result; - int i, y, plane; + int i, x, y, height, plane; struct BunRenderer bunRenderer; @@ -50,12 +71,31 @@ int main(void) { colors[2] = 0x0fff; colors[3] = 0x000f; + printf("%p\n", &spriteData); printf("setting up, i haven't crashed...yet.\n"); + x = 150; + y = 100; + height = y + 98; + + printf("%d, %d, %d\n", x, y, height); + + spriteData[0] = SPRPOS(x, y); + spriteData[1] = SPRCTL(x, y, height); + + printf("%0x %0x\n", spriteData[0], spriteData[1]); + + for (i = 2; i < 198; ++i) { + spriteData[i] = 0xffff; + } + + spriteData[198] = 0x0000; + spriteData[199] = 0x0000; + setupScreen(&screenSetup, SCREEN_WIDTH, SCREEN_HEIGHT, 3); setupInitialCurrentScreen(&screenSetup, ¤tScreen); - setupBunRenderer(&bunRenderer, &screenSetup, ¤tScreen); + //setupBunRenderer(&bunRenderer, &screenSetup, ¤tScreen); // blitter copy the first bitplane row down to the second @@ -87,7 +127,31 @@ int main(void) { *(currentCopperlist++) = custom_color + 6; *(currentCopperlist++) = 0x00F; + // sprites + *(currentCopperlist++) = custom_color + 34; + *(currentCopperlist++) = 0xF0F; + + *(currentCopperlist++) = custom_color + 36; + *(currentCopperlist++) = 0xFF0; + + *(currentCopperlist++) = custom_color + 38; + *(currentCopperlist++) = 0x00F; + + *(currentCopperlist++) = custom_sprite; + *(currentCopperlist++) = ((uint32_t)&spriteData >> 16); + + *(currentCopperlist++) = custom_sprite + 2; + *(currentCopperlist++) = ((uint32_t)&spriteData & 0xffff); + for (y = 0; y < 256; ++y) { + if (y > 100) { + *(currentCopperlist++) = custom_sprite_control; + *(currentCopperlist++) = SPRPOS(60 + y, y); + + *(currentCopperlist++) = custom_sprite_control + 2; + *(currentCopperlist++) = SPRCTL(60 + y, y, 0); + } + *(currentCopperlist++) = 1 + (31 << 1) + ((44 + y) << 8); *(currentCopperlist++) = 0xFFFE; *(currentCopperlist++) = custom_color; @@ -102,6 +166,7 @@ int main(void) { endCopperlist(currentCopperlist); for (i = 0; i < 200; ++i) { + /* swapCurrentScreenBuffer(&screenSetup, ¤tScreen); for (plane = 0; plane < 2; ++plane) { @@ -116,13 +181,14 @@ int main(void) { WaitBlit(); } - renderBunFrame(i, &bunRenderer); + //renderBunFrame(i, &bunRenderer); updateDisplayInCopperList( &screenSetup, ¤tScreen, copperlistBitplanePointers ); + */ WaitTOF(); } @@ -135,6 +201,10 @@ int main(void) { giveBackSystem(); + for (i = 10; i < 50; ++i) { + printf("%x ", copperlist[i]); + } + teardownScreen(&screenSetup); freeCopperlist(copperlist); diff --git a/system/copper.c b/system/copper.c index a6232a4..dc765e2 100644 --- a/system/copper.c +++ b/system/copper.c @@ -20,7 +20,7 @@ uint16_t * prepareNewCopperlist(void) { void setCopperlist(uint16_t *copperlist) { custom.cop1lc = copperlist; - //custom.copjmp1 = 1; + custom.copjmp1 = 1; } void freeCopperlist(uint16_t *copperlist) { diff --git a/system/system.s b/system/system.s index 3bac6c7..c5f6e66 100644 --- a/system/system.s +++ b/system/system.s @@ -111,7 +111,7 @@ _takeOverSystem: MOVE.W #INTF_SETCLR|INTF_INTEN|INTF_COPER|INTF_VERTB,intena(A0) ; enable master interrupt, copper, and VBR MOVE.W #$7FFF,dmacon(a0) - MOVE.W #DMAF_SETCLR|DMAF_MASTER|DMAF_COPPER|DMAF_RASTER|DMAF_BLITTER,dmacon(A0) + MOVE.W #DMAF_SETCLR|DMAF_MASTER|DMAF_COPPER|DMAF_RASTER|DMAF_BLITTER|DMAF_SPRITE,dmacon(A0) MOVEM.L (SP)+,A2/A6 RTS @@ -147,7 +147,6 @@ NewLevel3VBI: MOVEM.L (SP)+,D0-A6 RTE - _giveBackSystem: MOVE.L A6,-(SP) LEA _custom,A0 @@ -307,7 +306,6 @@ _addDisplayToCopperlist: MOVE.L A1,D0 MOVEM.L (SP)+,A2-A4/D2-D4 - RTS ; @stack *copperlist