Merge branch 'contiguous-wram' of git://github.com/TwitchPlaysPokemon/rgbds into TwitchPlaysPokemon-contiguous-wram

This commit is contained in:
AntonioND
2017-03-15 20:52:44 +00:00
3 changed files with 20 additions and 5 deletions

View File

@@ -8,9 +8,10 @@
#include "types.h" #include "types.h"
extern SLONG options; extern SLONG options;
#define OPT_SMALL 0x01 #define OPT_SMALL 0x01
#define OPT_SMART_C_LINK 0x02 #define OPT_SMART_C_LINK 0x02
#define OPT_OVERLAY 0x04 #define OPT_OVERLAY 0x04
#define OPT_CONTWRAM 0x08
enum eRpnData { enum eRpnData {
RPN_ADD = 0, RPN_ADD = 0,

View File

@@ -332,7 +332,11 @@ AssignSections(void)
} else if (i == BANK_WRAM0) { } else if (i == BANK_WRAM0) {
/* WRAM */ /* WRAM */
BankFree[i]->nOrg = 0xC000; BankFree[i]->nOrg = 0xC000;
BankFree[i]->nSize = 0x1000; if (options & OPT_CONTWRAM) {
BankFree[i]->nSize = 0x2000;
} else {
BankFree[i]->nSize = 0x1000;
}
} else if (i >= BANK_SRAM && i < BANK_SRAM + BANK_COUNT_SRAM) { } else if (i >= BANK_SRAM && i < BANK_SRAM + BANK_COUNT_SRAM) {
/* Swappable SRAM bank */ /* Swappable SRAM bank */
BankFree[i]->nOrg = 0xA000; BankFree[i]->nOrg = 0xA000;
@@ -373,6 +377,10 @@ AssignSections(void)
&& pSection->oAssigned == 0) { && pSection->oAssigned == 0) {
/* User wants to have a say... */ /* User wants to have a say... */
if (pSection->Type == SECT_WRAMX && options & OPT_CONTWRAM) {
errx(1, "WRAMX not compatible with -w!");
}
switch (pSection->Type) { switch (pSection->Type) {
case SECT_WRAM0: case SECT_WRAM0:
case SECT_HRAM: case SECT_HRAM:

View File

@@ -35,7 +35,7 @@ static void
usage(void) usage(void)
{ {
printf( printf(
"usage: rgblink [-t] [-m mapfile] [-n symfile] [-O overlay] [-o outfile] \n" "usage: rgblink [-tw] [-m mapfile] [-n symfile] [-O overlay] [-o outfile] \n"
" [-p pad_value] [-s symbol] file [...]\n"); " [-p pad_value] [-s symbol] file [...]\n");
exit(1); exit(1);
} }
@@ -56,7 +56,7 @@ main(int argc, char *argv[])
progname = argv[0]; progname = argv[0];
while ((ch = getopt(argc, argv, "m:n:o:O:p:s:t")) != -1) { while ((ch = getopt(argc, argv, "m:n:o:O:p:s:tw")) != -1) {
switch (ch) { switch (ch) {
case 'm': case 'm':
SetMapfileName(optarg); SetMapfileName(optarg);
@@ -88,6 +88,12 @@ main(int argc, char *argv[])
case 't': case 't':
options |= OPT_SMALL; options |= OPT_SMALL;
break; break;
case 'w':
/* Set to set WRAM as a single continuous block as on DMG.
All WRAM sections must be WRAM0 as bankable WRAM sections do
not exist in this mode. A WRAMX section will raise an error. */
options |= OPT_CONTWRAM;
break;
default: default:
usage(); usage();
/* NOTREACHED */ /* NOTREACHED */