#define M_PI 3.14159265358979323846\r
#endif\r
\r
+#define SCREEN_WIDTH 320\r
+#define SCREEN_OFFS 32\r
+\r
static uint8 SongReload;\r
static int CurrentSong;\r
\r
void NSFMMC5_Close(void);\r
static uint8 *ExWRAM=0;\r
\r
-void NSFGI(int h)\r
+void NSFGI(int h, void *param)\r
{\r
switch(h)\r
{\r
break;\r
case GI_RESETM2:\r
case GI_POWER: NSF_init();break;\r
+ case GI_INFOSTRING:\r
+ sprintf(param, "NSF, %s", PAL?"PAL":"NTSC");\r
+ break;\r
}\r
}\r
\r
SetReadHandler(0x2000,0x37ff,0);\r
SetReadHandler(0x3836,0x3FFF,0);\r
SetReadHandler(0x3800,0x3835,NSFROMRead);\r
+ Page[0x3800>>11]=NSFROM-0x3800; // this is required for asm core to work.\r
\r
SetWriteHandler(0x5ff6,0x5fff,NSF_write);\r
\r
void DrawNSF(uint8 *XBuf)\r
{\r
char snbuf[16];\r
+ int32 mul=0;\r
int x;\r
\r
if(vismode==0) return;\r
\r
- memset(XBuf,0,256*240);\r
+ for (x=0;x<240;x++)\r
+ memset(XBuf+SCREEN_OFFS+x*SCREEN_WIDTH,0,256);\r
\r
+ if(FSettings.SoundVolume)\r
+ mul=8192*240/(16384*FSettings.SoundVolume/50);\r
\r
{\r
- int32 *Bufpl;\r
- int32 mul=0;\r
+ int16 *Bufpl;\r
\r
int l;\r
l=GetSoundBuffer(&Bufpl);\r
\r
if(special==0)\r
{\r
- if(FSettings.SoundVolume)\r
- mul=8192*240/(16384*FSettings.SoundVolume/50);\r
for(x=0;x<256;x++)\r
{\r
uint32 y;\r
y=142+((Bufpl[(x*l)>>8]*mul)>>14);\r
if(y<240)\r
- XBuf[x+y*256]=3;\r
+ XBuf[x+y*SCREEN_WIDTH+SCREEN_OFFS]=3;\r
}\r
}\r
else if(special==1)\r
{\r
- if(FSettings.SoundVolume)\r
- mul=8192*240/(8192*FSettings.SoundVolume/50);\r
for(x=0;x<256;x++)\r
{\r
double r;\r
yp=120+r*sin(x*M_PI*2/256);\r
xp&=255;\r
yp%=240;\r
- XBuf[xp+yp*256]=3;\r
+ XBuf[xp+yp*SCREEN_WIDTH+SCREEN_OFFS]=3;\r
}\r
}\r
else if(special==2)\r
{\r
static double theta=0;\r
- if(FSettings.SoundVolume)\r
- mul=8192*240/(16384*FSettings.SoundVolume/50);\r
for(x=0;x<128;x++)\r
{\r
double xc,yc;\r
n=120+r*sin(t);\r
\r
if(m<256 && n<240)\r
- XBuf[m+n*256]=3;\r
+ XBuf[m+n*SCREEN_WIDTH+SCREEN_OFFS]=3;\r
\r
}\r
for(x=128;x<256;x++)\r
n=120+r*sin(t);\r
\r
if(m<256 && n<240)\r
- XBuf[m+n*256]=3;\r
+ XBuf[m+n*SCREEN_WIDTH+SCREEN_OFFS]=3;\r
\r
}\r
theta+=(double)M_PI/256;\r
}\r
}\r
\r
- DrawTextTrans(XBuf+10*256+4+(((31-strlen((char*)NSFHeader.SongName))<<2)), 256, NSFHeader.SongName, 6);\r
- DrawTextTrans(XBuf+26*256+4+(((31-strlen((char*)NSFHeader.Artist))<<2)), 256,NSFHeader.Artist, 6);\r
- DrawTextTrans(XBuf+42*256+4+(((31-strlen((char*)NSFHeader.Copyright))<<2)), 256,NSFHeader.Copyright, 6);\r
+ DrawTextTrans(XBuf+10*SCREEN_WIDTH+SCREEN_OFFS+4+(((31-strlen((char*)NSFHeader.SongName))<<2)), SCREEN_WIDTH, NSFHeader.SongName, 6);\r
+ DrawTextTrans(XBuf+26*SCREEN_WIDTH+SCREEN_OFFS+4+(((31-strlen((char*)NSFHeader.Artist))<<2)), SCREEN_WIDTH,NSFHeader.Artist, 6);\r
+ DrawTextTrans(XBuf+42*SCREEN_WIDTH+SCREEN_OFFS+4+(((31-strlen((char*)NSFHeader.Copyright))<<2)), SCREEN_WIDTH,NSFHeader.Copyright, 6);\r
\r
- DrawTextTrans(XBuf+70*256+4+(((31-strlen("Song:"))<<2)), 256, (uint8*)"Song:", 6);\r
+ DrawTextTrans(XBuf+70*SCREEN_WIDTH+SCREEN_OFFS+4+(((31-strlen("Song:"))<<2)), SCREEN_WIDTH, (uint8*)"Song:", 6);\r
sprintf(snbuf,"<%d/%d>",CurrentSong,NSFHeader.TotalSongs);\r
- DrawTextTrans(XBuf+82*256+4+(((31-strlen(snbuf))<<2)), 256, (uint8*)snbuf, 6);\r
+ DrawTextTrans(XBuf+82*SCREEN_WIDTH+SCREEN_OFFS+4+(((31-strlen(snbuf))<<2)), SCREEN_WIDTH, (uint8*)snbuf, 6);\r
\r
{\r
static uint8 last=0;\r