X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=direct.c;h=77fda019a62dd459a106f98959aac8be486a769b;hp=efec94a2f438fd63d3a3931f14567cfea8efa690;hb=c04128b575f2db39445b9ef6fcf0c12b3bb2c60f;hpb=062214e62031c26d372edc2e68473ebb64f6a506 diff --git a/direct.c b/direct.c index efec94a..77fda01 100644 --- a/direct.c +++ b/direct.c @@ -108,7 +108,8 @@ int d_org(void) } orgaddr = address; - orgactive = 1; + orgactive = 1; +//printf("ORG: address = $%08X...\n", orgaddr); return 0; } @@ -312,7 +313,6 @@ int d_incbin(void) if (*tok != STRING) { -// error(syntax_error); error("syntax error; string missing"); return ERROR; } @@ -339,7 +339,6 @@ int d_incbin(void) return ERROR; } -//#define D_byte(b) {*chptr++=(char)b; ++sloc; ++ch_size; if(orgactive) ++orgaddr;} memcpy(chptr, fileBuffer, size); chptr += size; sloc += size; @@ -373,12 +372,38 @@ int d_regbank1(void) } +// +// Helper function, to cut down on mistakes & typing +// +static inline void SkipBytes(unsigned bytesToSkip) +{ + if (!bytesToSkip) + return; + + if ((scattr & SBSS) == 0) + { + chcheck(bytesToSkip); + D_ZEROFILL(bytesToSkip); + } + else + { + sloc += bytesToSkip; + + if (orgactive) + orgaddr += bytesToSkip; + } +} + + // // Adjust Location to an EVEN Value // int d_even(void) { - if (sloc & 1) + unsigned skip = (rgpu || rdsp ? orgaddr : sloc) & 0x01; + +// if (sloc & 1) + if (skip) { if ((scattr & SBSS) == 0) { @@ -387,7 +412,10 @@ int d_even(void) } else { - ++sloc; + sloc++; + + if (orgactive) + orgaddr++; } } @@ -400,30 +428,9 @@ int d_even(void) // int d_long(void) { - unsigned i; - unsigned val = 4; - - i = sloc & ~(val - 1); - - if (i != sloc) - val = val - (sloc - i); - else - val = 0; - - if (val) - { - if ((scattr & SBSS) == 0) - { - chcheck(val); - - for(i=0; isvalue; } @@ -1238,9 +1192,11 @@ int d_gpu(void) // If previous section was dsp or 68000 then we need to reset ORG'd Addresses if (!rgpu) { +//printf("Resetting ORG...\n"); orgactive = 0; orgwarning = 0; } +//else printf("NOT resetting ORG!\n"); rgpu = 1; // Set GPU assembly rdsp = 0; // Unset DSP assembly