From eb5daa16843d5e819ffe6a788a9c93e930ff0e82 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Sun, 2 Jun 2024 14:42:36 -0400 Subject: [PATCH] code cleanups, on to sprites --- bun.c | 84 ++++++++++++++++++++++++++++++++++++--------------------- bun.h | 39 +-------------------------- main | Bin 15776 -> 15452 bytes main.c | 13 ++------- 4 files changed, 57 insertions(+), 79 deletions(-) diff --git a/bun.c b/bun.c index 2dd2bce..999e930 100644 --- a/bun.c +++ b/bun.c @@ -14,6 +14,31 @@ #include "bun.h" #include "system/system.h" +#define COOL_BUN_WIDTH (32) +#define COOL_BUN_WIDTH_BYTES (COOL_BUN_WIDTH / 8) +#define COOL_BUN_HEIGHT (32) +#define COOL_BUN_PLANES (2) +#define COOL_BUN_LAST_ROW (COOL_BUN_HEIGHT - 1) +#define COOL_BUN_LAST_ROW_BYTES (COOL_BUN_LAST_ROW * COOL_BUN_WIDTH_BYTES) + +#define COOL_BUN_PLANE_SIZE (COOL_BUN_WIDTH_BYTES * COOL_BUN_HEIGHT) +#define COOL_BUN_MEMORY_SIZE (COOL_BUN_PLANE_SIZE * COOL_BUN_PLANES) + +#define BUN_MAX_RANGE (31 + 320) + +#define BUN_COUNT (12) +#define BUN_SPEED (1) + +#define BUN_HORIZ_DISTANCE_BETWEEN_BUNS ((BUN_MAX_RANGE / 4) - COOL_BUN_WIDTH) +#define BUN_TOTAL_HORIZ_DISTANCE (BUN_HORIZ_DISTANCE_BETWEEN_BUNS + COOL_BUN_WIDTH) +#define BUN_ROW_START (30) +#define BUN_VERT_DISTANCE_BETWEEN_BUNS (20) +#define BUN_TOTAL_VERT_DISTANCE (COOL_BUN_HEIGHT + BUN_VERT_DISTANCE_BETWEEN_BUNS) +#define FRAME_MAX (BUN_TOTAL_HORIZ_DISTANCE / BUN_SPEED) + +#define FRAMES_FOR_SCREEN (90) +#define BUN_WAVE_LENGTH (FRAMES_FOR_SCREEN / 2) + // linked as raw bytes in assembler extern unsigned char far coolbun[]; @@ -26,9 +51,8 @@ unsigned char *coolbunArea; extern struct Custom far custom; -void setupBun() { +void setupBun(void) { unsigned char *currentCoolBunArea, *currentCoolBun; - unsigned int x, y, plane; coolbunArea = AllocMem(COOL_BUN_MEMORY_SIZE, MEMF_CHIP | MEMF_CLEAR); currentCoolBunArea = coolbunArea; @@ -37,7 +61,7 @@ void setupBun() { CopyMem(coolbun, coolbunArea, COOL_BUN_MEMORY_SIZE); } -void teardownBun() { +void teardownBun(void) { FreeMem(coolbunArea, COOL_BUN_MEMORY_SIZE); } @@ -195,37 +219,10 @@ void renderBun( } } -short int allBunPositionsByFrame[FRAMES_FOR_SCREEN][BUN_COUNT][2]; - -void calculateAllBunPositions( - struct ScreenSetup *screenSetup -) { - int frame; - - for (frame = 0; frame < FRAMES_FOR_SCREEN; ++frame) { - calculateBunPositions( - frame, - allBunPositionsByFrame[frame], - screenSetup - ); - } -} - #define MAX_SINE_WAVE_CHANGE (20) int bunAngleAdjustments[BUN_COUNT]; -void buildBunAngleAdjustments() { - int row, column, current, angleAdjustment; - for (current = 0; current < BUN_COUNT; ++current) { - angleAdjustment = 0; - if (current % 2 == 1) angleAdjustment += 180; - if (current / 4 == 1) angleAdjustment += 90; - - bunAngleAdjustments[current] = angleAdjustment; - } -} - void calculateBunPositions( uint16_t frame, short int bunPositions[BUN_COUNT][2], @@ -261,6 +258,33 @@ void calculateBunPositions( } } +short int allBunPositionsByFrame[FRAMES_FOR_SCREEN][BUN_COUNT][2]; + +void calculateAllBunPositions( + struct ScreenSetup *screenSetup +) { + int frame; + + for (frame = 0; frame < FRAMES_FOR_SCREEN; ++frame) { + calculateBunPositions( + frame, + allBunPositionsByFrame[frame], + screenSetup + ); + } +} + +void buildBunAngleAdjustments() { + int current, angleAdjustment; + for (current = 0; current < BUN_COUNT; ++current) { + angleAdjustment = 0; + if (current % 2 == 1) angleAdjustment += 180; + if (current / 4 == 1) angleAdjustment += 90; + + bunAngleAdjustments[current] = angleAdjustment; + } +} + void setupBunRenderer( struct BunRenderer *bunRenderer, struct ScreenSetup *screenSetup, diff --git a/bun.h b/bun.h index 8dfc3fe..b10af54 100644 --- a/bun.h +++ b/bun.h @@ -3,31 +3,6 @@ #include "screen.h" -#define COOL_BUN_WIDTH (32) -#define COOL_BUN_WIDTH_BYTES (COOL_BUN_WIDTH / 8) -#define COOL_BUN_HEIGHT (32) -#define COOL_BUN_PLANES (2) -#define COOL_BUN_LAST_ROW (COOL_BUN_HEIGHT - 1) -#define COOL_BUN_LAST_ROW_BYTES (COOL_BUN_LAST_ROW * COOL_BUN_WIDTH_BYTES) - -#define COOL_BUN_PLANE_SIZE (COOL_BUN_WIDTH_BYTES * COOL_BUN_HEIGHT) -#define COOL_BUN_MEMORY_SIZE (COOL_BUN_PLANE_SIZE * COOL_BUN_PLANES) - -#define BUN_MAX_RANGE (31 + 320) - -#define BUN_COUNT (12) -#define BUN_SPEED (1) - -#define BUN_HORIZ_DISTANCE_BETWEEN_BUNS ((BUN_MAX_RANGE / 4) - COOL_BUN_WIDTH) -#define BUN_TOTAL_HORIZ_DISTANCE (BUN_HORIZ_DISTANCE_BETWEEN_BUNS + COOL_BUN_WIDTH) -#define BUN_ROW_START (30) -#define BUN_VERT_DISTANCE_BETWEEN_BUNS (20) -#define BUN_TOTAL_VERT_DISTANCE (COOL_BUN_HEIGHT + BUN_VERT_DISTANCE_BETWEEN_BUNS) -#define FRAME_MAX (BUN_TOTAL_HORIZ_DISTANCE / BUN_SPEED) - -#define FRAMES_FOR_SCREEN (90) -#define BUN_WAVE_LENGTH (FRAMES_FOR_SCREEN / 2) - struct BunRenderer { struct ScreenSetup *screenSetup; struct CurrentScreen *currentScreen; @@ -43,17 +18,5 @@ void renderBunFrame( int frame, struct BunRenderer * ); - -void renderBun( - int x, - int y, - struct ScreenSetup *screenSetup, - struct CurrentScreen *currentScreen -); -void calculateBunPositions( - uint16_t frame, - short int bunPositions[BUN_COUNT][2], - struct ScreenSetup *screenSetup -); - +void teardownBunRenderer(void); #endif diff --git a/main b/main index 9b3097557984c5de6e5f8197d50968e99678e484..0814c45a0204c7a9a4a4d3613bc4d0033fdc42e9 100755 GIT binary patch delta 4395 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 delta 4594 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 HruP2@Wq=4@ diff --git a/main.c b/main.c index 9dbfc8e..bb4be2b 100644 --- a/main.c +++ b/main.c @@ -37,13 +37,9 @@ void *copperlistSpritePointers[8]; uint16_t custom_color = (uint16_t)offsetof(Custom, color); uint16_t custom_sprite = (uint16_t)offsetof(Custom, sprpt); -short int bunPositions[BUN_COUNT][2]; - int main(void) { uint16_t *copperlist, *currentCopperlist, result; - int i, j, x, y, plane; - int blitShiftRight, memoryXOffset, blitWidth; - uint32_t wow, wow2; + int i, y, plane; struct BunRenderer bunRenderer; @@ -56,7 +52,6 @@ int main(void) { printf("setting up, i haven't crashed...yet.\n"); - setupBun(); setupScreen(&screenSetup, SCREEN_WIDTH, SCREEN_HEIGHT, 3); setupInitialCurrentScreen(&screenSetup, ¤tScreen); @@ -144,11 +139,7 @@ int main(void) { freeCopperlist(copperlist); - teardownBun(); - - for (i = 0; i < BUN_COUNT; ++i) { - printf("%d %d\n", bunPositions[i][0], bunPositions[i][1]); - } + teardownBunRenderer(); return 0; }