Some refactors.

This commit is contained in:
GrenderG 2023-09-14 23:58:47 +02:00
parent 664cfd2cba
commit fc559b9f63
2 changed files with 69 additions and 80 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
*.gb *.gb
*.noi *.noi
*.map *.map
*.sav
.idea .idea
cmake-build-debug cmake-build-debug

View File

@ -1,9 +1,10 @@
#include <gb/gb.h> #include <gb/gb.h>
#include <gb/hardware.h> #include <gb/hardware.h>
//#include <gbdk/console.h>
#include <stdint.h> #include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <rand.h> #include <rand.h>
//#include <gbdk/console.h>
#include "gen1.h" #include "gen1.h"
#define PARTY_SIZE 6 #define PARTY_SIZE 6
@ -18,65 +19,60 @@
#define SER_REG_DIR (*(uint8_t *)0xFF01) #define SER_REG_DIR (*(uint8_t *)0xFF01)
#define SER_OPT_REG_DIR (*(uint8_t *)0xFF02) #define SER_OPT_REG_DIR (*(uint8_t *)0xFF02)
const unsigned char MewTiles[] =
const unsigned char mew_tiles[] =
{ {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x03,0x06,0x01,0x08,0x09,0x09, 0x00,0x01,0x03,0x06,0x01,0x08,0x09,0x09,
0x02,0x12,0x1A,0x12,0x08,0x11,0x09,0x09, 0x02,0x12,0x1A,0x12,0x08,0x11,0x09,0x09,
0x00,0x09,0x07,0x04,0x03,0x04,0x03,0x02, 0x00,0x09,0x07,0x04,0x03,0x04,0x03,0x02,
0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x03,0x03,0x07,0x00,0x00, 0x00,0x00,0x01,0x03,0x03,0x07,0x00,0x00,
0x30,0x78,0x66,0x47,0x50,0x60,0x28,0x30, 0x30,0x78,0x66,0x47,0x50,0x60,0x28,0x30,
0x20,0x30,0x00,0x20,0x25,0x46,0x46,0x49, 0x20,0x30,0x00,0x20,0x25,0x46,0x46,0x49,
0x47,0x4B,0x22,0x4A,0x23,0x23,0x21,0x21, 0x47,0x4B,0x22,0x4A,0x23,0x23,0x21,0x21,
0xD3,0xE0,0xF4,0x18,0xF8,0x7E,0x02,0x83, 0xD3,0xE0,0xF4,0x18,0xF8,0x7E,0x02,0x83,
0x00,0x00,0x01,0x01,0x07,0x0F,0x03,0x11, 0x00,0x00,0x01,0x01,0x07,0x0F,0x03,0x11,
0x13,0x11,0x87,0x8E,0xC7,0x46,0x2F,0xFE, 0x13,0x11,0x87,0x8E,0xC7,0x46,0x2F,0xFE,
0x96,0xFF,0x77,0x7F,0x13,0x1F,0x0B,0x0F, 0x96,0xFF,0x77,0x7F,0x13,0x1F,0x0B,0x0F,
0x7F,0xFF,0xE7,0xFF,0xFF,0xFF,0x00,0x00, 0x7F,0xFF,0xE7,0xFF,0xFF,0xFF,0x00,0x00,
0xFC,0xFE,0x83,0x00,0x00,0x00,0x00,0x00, 0xFC,0xFE,0x83,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x01,0x85,0x02, 0x00,0x00,0x00,0x00,0x02,0x01,0x85,0x02,
0x43,0x87,0x85,0x85,0x87,0x87,0x7A,0x86, 0x43,0x87,0x85,0x85,0x87,0x87,0x7A,0x86,
0xFE,0x00,0x01,0x00,0x00,0x01,0x03,0x03, 0xFE,0x00,0x01,0x00,0x00,0x01,0x03,0x03,
0xFC,0xFF,0x87,0xF8,0x08,0xF0,0x30,0xC0, 0xFC,0xFF,0x87,0xF8,0x08,0xF0,0x30,0xC0,
0xC0,0x00,0x00,0x00,0x01,0x00,0x00,0x02, 0xC0,0x00,0x00,0x00,0x01,0x00,0x00,0x02,
0x84,0x04,0x44,0x84,0xB8,0xC4,0xF3,0xFA, 0x84,0x04,0x44,0x84,0xB8,0xC4,0xF3,0xFA,
0xC1,0xE1,0x81,0x81,0x00,0x00,0x00,0x00, 0xC1,0xE1,0x81,0x81,0x00,0x00,0x00,0x00,
0x00,0x01,0x02,0x06,0x00,0x08,0x10,0x10, 0x00,0x01,0x02,0x06,0x00,0x08,0x10,0x10,
0x00,0x10,0x06,0x0E,0x00,0x01,0x00,0x00, 0x00,0x10,0x06,0x0E,0x00,0x01,0x00,0x00,
0x1C,0x1C,0x64,0xE4,0xCC,0x44,0x14,0x0C, 0x1C,0x1C,0x64,0xE4,0xCC,0x44,0x14,0x0C,
0x10,0x0C,0x18,0x08,0x88,0x84,0x84,0x44, 0x10,0x0C,0x18,0x08,0x88,0x84,0x84,0x44,
0x8E,0x47,0x0F,0x44,0x09,0x07,0x18,0x08, 0x8E,0x47,0x0F,0x44,0x09,0x07,0x18,0x08,
0x30,0x10,0x40,0x60,0x80,0x80,0x00,0x00, 0x30,0x10,0x40,0x60,0x80,0x80,0x00,0x00,
0x80,0x80,0xC0,0x60,0xF8,0x18,0x7C,0x84, 0x80,0x80,0xC0,0x60,0xF8,0x18,0x7C,0x84,
0xBE,0x42,0xFC,0x64,0xD8,0x58,0xC0,0x20, 0xBE,0x42,0xFC,0x64,0xD8,0x58,0xC0,0x20,
0x60,0x20,0x60,0x20,0xE0,0x20,0xD0,0x70, 0x60,0x20,0x60,0x20,0xE0,0x20,0xD0,0x70,
0x7C,0x8C,0x63,0x83,0xC9,0xC0,0x1F,0x3F, 0x7C,0x8C,0x63,0x83,0xC9,0xC0,0x1F,0x3F,
0x80,0xC0,0x20,0x30,0x08,0x08,0x08,0x04, 0x80,0xC0,0x20,0x30,0x08,0x08,0x08,0x04,
0x0C,0x04,0x1C,0x02,0xFE,0xE2,0x0E,0x12, 0x0C,0x04,0x1C,0x02,0xFE,0xE2,0x0E,0x12,
0x06,0x0A,0x0A,0x0A,0x0A,0x0A,0x08,0x0A, 0x06,0x0A,0x0A,0x0A,0x0A,0x0A,0x08,0x0A,
0x04,0x12,0x14,0x14,0x28,0x24,0x98,0xC8, 0x04,0x12,0x14,0x14,0x28,0x24,0x98,0xC8,
0xF0,0x10,0xC0,0x60,0x00,0x80,0x00,0x00, 0xF0,0x10,0xC0,0x60,0x00,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0xC0,0x40,0x00,0x80, 0x00,0x00,0x00,0x80,0xC0,0x40,0x00,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
}; };
#define MewMapWidth 5 // It has +128 since we are loading Mew sprites starting at position 128
#define MewMapHeight 5 // to prevent collisions with the font sprites.
#define MewMapBank 0 const unsigned char mew_map[] =
/*const unsigned char MewMap[] =
{ {
0x14,0x14,0x14,0x0B,0x10,0x14,0x03,0x07,0x0C,0x11, 0x94,0x94,0x94,0x8b,0x90,0x94,0x83,0x87,0x8c,0x91,
0x00,0x04,0x08,0x0D,0x12,0x01,0x05,0x09,0x0E,0x14, 0x80,0x84,0x88,0x8d,0x92,0x81,0x85,0x89,0x8e,0x94,
0x02,0x06,0x0A,0x0F,0x13 0x82,0x86,0x8a,0x8f,0x93
};*/
const unsigned char MewMap[] =
{
0x94,0x94,0x94,0x8b,0x90,0x94,0x83,0x87,0x8c,0x91,0x80,0x84,0x88,0x8d,0x92,0x81,0x85,0x89,0x8e,0x94,0x82,0x86,0x8a,0x8f,0x93
}; };
enum connection_state_t connection_state = NOT_CONNECTED; enum connection_state_t connection_state = NOT_CONNECTED;
@ -114,7 +110,7 @@ unsigned char nicknames[11] = {
typedef struct TraderPacket { typedef struct TraderPacket {
// Name must not exceed 10 characters + 1 STOP_BYTE // Name must not exceed 10 characters + 1 STOP_BYTE
// Any leftover space after STOP_BYTE must be filled with NULL_BYTE // Any leftover space must be filled with STOP_BYTE
unsigned char name[11]; unsigned char name[11];
struct SelectedPokemon selected_pokemon; struct SelectedPokemon selected_pokemon;
struct PartyMember pokemon[6]; struct PartyMember pokemon[6];
@ -480,25 +476,15 @@ void main(void)
} }
set_interrupts(SIO_IFLAG); // disable other interrupts. note: this disables sprite movement set_interrupts(SIO_IFLAG); // disable other interrupts. note: this disables sprite movement
puts(""); puts("\n Mew Distribution");
puts(" Mew Distribution"); puts(" Madrid 2000\n\n");
puts(" Madrid 2000"); puts(" Reset: Press Start\n\n\n\n\n\n\n\n\n");
puts(""); puts(" by @GrenderG");
puts("");
puts(" Reset: Press Start"); // Load Mew tiles starting at position 128.
puts(""); set_bkg_data(128, 20, mew_tiles);
puts(""); // Draw Mew figure in the middle of the screen (more or less).
puts(""); set_bkg_tiles(7, 8, 5, 5, mew_map);
puts("");
puts("");
puts("");
puts("");
puts("");
puts("");
puts(" by @GrenderG");
set_bkg_data(128, 20, MewTiles);
set_bkg_tiles(7, 8, 5, 5, MewMap);
fill_pokemon_team(); fill_pokemon_team();
//printf("%u\n", (randw() % (65535 - 60000 + 1)) + 60000); //printf("%u\n", (randw() % (65535 - 60000 + 1)) + 60000);
@ -518,15 +504,17 @@ void main(void)
__endasm; __endasm;
} }
// See https://www.reddit.com/r/retrogamedev/comments/16f4myt/i_homebrewed_a_pokemon_gen_1_mew_distribution/
// and https://github.com/gbdk-2020/gbdk-2020/pull/577
__asm __asm
LD A,#0x02 LD A,#0x02 ; .IO_RECEIVING
LD (__io_status),A ; Store status LD (__io_status),A ; Store status
LD A,#0x01 LD A,#0x01
LDH (0x02),A ; Use external clock LDH (0x02),A ; (.SC) Use external clock
LD A,(__io_out) LD A,(__io_out)
LDH (0x01),A ; Send __io_out byte LDH (0x01),A ; (.SB) Send __io_out byte
LD A,#0x81 LD A,#0x81
LDH (0x02),A ; Use external clock LDH (0x02),A ; (.SC) Use external clock
__endasm; __endasm;
while(_io_status == IO_RECEIVING || _io_status == IO_SENDING); while(_io_status == IO_RECEIVING || _io_status == IO_SENDING);