mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 07:17:45 -04:00
tweaking win32 port
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@339 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
4b2b67ebc7
commit
8831ef19a0
9 changed files with 79 additions and 142 deletions
|
@ -12,7 +12,6 @@ static IDirectSoundBuffer *LoopBuffer=NULL;
|
||||||
static int LoopLen=0,LoopWrite=0; // Next position in loop to write
|
static int LoopLen=0,LoopWrite=0; // Next position in loop to write
|
||||||
|
|
||||||
short *DSoundNext=NULL; // Buffer for next sound data to put in loop
|
short *DSoundNext=NULL; // Buffer for next sound data to put in loop
|
||||||
//int DSoundSeg=0; // Seg length in samples
|
|
||||||
|
|
||||||
static int LoopBlank()
|
static int LoopBlank()
|
||||||
{
|
{
|
||||||
|
@ -102,7 +101,7 @@ int DSoundUpdate()
|
||||||
DWORD play=0;
|
DWORD play=0;
|
||||||
int pos=0;
|
int pos=0;
|
||||||
|
|
||||||
if (LoopBuffer==NULL) return 1;
|
if (LoopBuffer==NULL) return -1;
|
||||||
|
|
||||||
LoopBuffer->GetCurrentPosition(&play,NULL);
|
LoopBuffer->GetCurrentPosition(&play,NULL);
|
||||||
pos=play>>((PicoOpt&8) ? 2 : 1);
|
pos=play>>((PicoOpt&8) ? 2 : 1);
|
||||||
|
@ -121,10 +120,12 @@ int DSoundUpdate()
|
||||||
|
|
||||||
void DSoundMute()
|
void DSoundMute()
|
||||||
{
|
{
|
||||||
|
if (LoopBuffer==NULL) return;
|
||||||
LoopBuffer->Stop();
|
LoopBuffer->Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSoundUnMute()
|
void DSoundUnMute()
|
||||||
{
|
{
|
||||||
|
if (LoopBuffer==NULL) return;
|
||||||
LoopBuffer->Play(0,0,DSBPLAY_LOOPING);
|
LoopBuffer->Play(0,0,DSBPLAY_LOOPING);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,8 @@ int DirectInit()
|
||||||
{
|
{
|
||||||
D3DPRESENT_PARAMETERS d3dpp;
|
D3DPRESENT_PARAMETERS d3dpp;
|
||||||
D3DDISPLAYMODE mode;
|
D3DDISPLAYMODE mode;
|
||||||
int i=0,ret=0;
|
D3DDEVTYPE dt = D3DDEVTYPE_HAL;
|
||||||
|
int i,u,ret=0;
|
||||||
|
|
||||||
memset(&d3dpp,0,sizeof(d3dpp));
|
memset(&d3dpp,0,sizeof(d3dpp));
|
||||||
memset(&mode,0,sizeof(mode));
|
memset(&mode,0,sizeof(mode));
|
||||||
|
@ -44,25 +45,21 @@ int DirectInit()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Try to create a device with hardware vertex processing:
|
// Try to create a device with hardware vertex processing:
|
||||||
for (i=0;i<4;i++)
|
for (u=0;u<2;u++)
|
||||||
{
|
{
|
||||||
int behave=D3DCREATE_HARDWARE_VERTEXPROCESSING;
|
for (i=0;i<4;i++)
|
||||||
|
|
||||||
#ifdef _XBOX
|
|
||||||
if (i==1)
|
|
||||||
{
|
{
|
||||||
// If 60Hz didn't work, try PAL 50Hz instead:
|
int behave=D3DCREATE_HARDWARE_VERTEXPROCESSING;
|
||||||
d3dpp.FullScreen_RefreshRateInHz=0;
|
|
||||||
d3dpp.BackBufferHeight=MainHeight=576;
|
// Try software vertex processing:
|
||||||
|
if (i==1) behave=D3DCREATE_MIXED_VERTEXPROCESSING;
|
||||||
|
if (i==2) behave=D3DCREATE_SOFTWARE_VERTEXPROCESSING;
|
||||||
|
|
||||||
|
Direct3D->CreateDevice(D3DADAPTER_DEFAULT,dt,FrameWnd,behave,&d3dpp,&Device);
|
||||||
|
if (Device) break;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
// Try software vertex processing:
|
|
||||||
if (i==2) behave=D3DCREATE_MIXED_VERTEXPROCESSING;
|
|
||||||
if (i==3) behave=D3DCREATE_SOFTWARE_VERTEXPROCESSING;
|
|
||||||
|
|
||||||
Direct3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,FrameWnd,behave,&d3dpp,&Device);
|
|
||||||
if (Device) break;
|
if (Device) break;
|
||||||
|
dt = D3DDEVTYPE_REF;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Device==NULL) return 1;
|
if (Device==NULL) return 1;
|
||||||
|
@ -184,12 +181,14 @@ static int SetupMatrices()
|
||||||
int DirectScreen()
|
int DirectScreen()
|
||||||
{
|
{
|
||||||
unsigned char *lock=NULL;
|
unsigned char *lock=NULL;
|
||||||
|
int ret;
|
||||||
|
|
||||||
// Copy the screen to the screen texture:
|
// Copy the screen to the screen texture:
|
||||||
#ifdef _XBOX
|
#ifdef _XBOX
|
||||||
TexScreenSwizzle();
|
TexScreenSwizzle();
|
||||||
#else
|
#else
|
||||||
TexScreenLinear();
|
ret=TexScreenLinear();
|
||||||
|
if (ret) dprintf2("TexScreenLinear failed\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SetupMatrices();
|
SetupMatrices();
|
||||||
|
@ -197,14 +196,19 @@ int DirectScreen()
|
||||||
MakeVertexList();
|
MakeVertexList();
|
||||||
|
|
||||||
// Copy vertices in:
|
// Copy vertices in:
|
||||||
VertexBuffer->Lock(0,sizeof(VertexList),&lock,0); if (lock==NULL) return 1;
|
VertexBuffer->Lock(0,sizeof(VertexList),&lock,0);
|
||||||
|
if (lock==NULL) { dprintf2("VertexBuffer->Lock failed\n"); return 1; }
|
||||||
memcpy(lock,VertexList,sizeof(VertexList));
|
memcpy(lock,VertexList,sizeof(VertexList));
|
||||||
VertexBuffer->Unlock();
|
VertexBuffer->Unlock();
|
||||||
|
|
||||||
Device->SetTexture(0,TexScreen);
|
ret=Device->SetTexture(0,TexScreen);
|
||||||
Device->SetStreamSource(0,VertexBuffer,sizeof(CustomVertex));
|
if (ret) dprintf2("SetTexture failed\n");
|
||||||
Device->SetVertexShader(D3DFVF_CUSTOMVERTEX);
|
ret=Device->SetStreamSource(0,VertexBuffer,sizeof(CustomVertex));
|
||||||
Device->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
|
if (ret) dprintf2("SetStreamSource failed\n");
|
||||||
|
ret=Device->SetVertexShader(D3DFVF_CUSTOMVERTEX);
|
||||||
|
if (ret) dprintf2("SetVertexShader failed\n");
|
||||||
|
ret=Device->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
|
||||||
|
if (ret) dprintf2("DrawPrimitive failed\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,9 +2,7 @@
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
|
|
||||||
unsigned short *EmuScreen=NULL;
|
unsigned short *EmuScreen=NULL;
|
||||||
extern "C" unsigned short *framebuff=NULL;
|
|
||||||
int EmuWidth=0,EmuHeight=0;
|
int EmuWidth=0,EmuHeight=0;
|
||||||
static int frame=0;
|
|
||||||
static int EmuScan(unsigned int num, void *sdata);
|
static int EmuScan(unsigned int num, void *sdata);
|
||||||
unsigned char *PicoDraw2FB = NULL;
|
unsigned char *PicoDraw2FB = NULL;
|
||||||
|
|
||||||
|
@ -18,10 +16,9 @@ int EmuInit()
|
||||||
EmuWidth=320; EmuHeight=224;
|
EmuWidth=320; EmuHeight=224;
|
||||||
len=EmuWidth*EmuHeight; len<<=1;
|
len=EmuWidth*EmuHeight; len<<=1;
|
||||||
EmuScreen=(unsigned short *)malloc(len); if (EmuScreen==NULL) return 1;
|
EmuScreen=(unsigned short *)malloc(len); if (EmuScreen==NULL) return 1;
|
||||||
framebuff=(unsigned short *)malloc((8+320)*(8+224+8)*2);
|
PicoDraw2FB=(unsigned char *)malloc((8+320)*(8+224+8)*2);
|
||||||
memset(EmuScreen,0,len);
|
memset(EmuScreen,0,len);
|
||||||
|
|
||||||
PicoDraw2FB = (unsigned char *)framebuff;
|
|
||||||
PicoDrawSetColorFormat(1);
|
PicoDrawSetColorFormat(1);
|
||||||
PicoScan=EmuScan;
|
PicoScan=EmuScan;
|
||||||
|
|
||||||
|
@ -32,7 +29,7 @@ void EmuExit()
|
||||||
{
|
{
|
||||||
//RomFree();
|
//RomFree();
|
||||||
free(EmuScreen); EmuScreen=NULL; // Deallocate screen
|
free(EmuScreen); EmuScreen=NULL; // Deallocate screen
|
||||||
free(framebuff);
|
free(PicoDraw2FB);
|
||||||
EmuWidth=EmuHeight=0;
|
EmuWidth=EmuHeight=0;
|
||||||
|
|
||||||
PicoExit();
|
PicoExit();
|
||||||
|
@ -50,7 +47,7 @@ static int EmuScan(unsigned int num, void *sdata)
|
||||||
pd=EmuScreen+(num<<8)+(num<<6); end=pd+320;
|
pd=EmuScreen+(num<<8)+(num<<6); end=pd+320;
|
||||||
ps=(unsigned short *)sdata;
|
ps=(unsigned short *)sdata;
|
||||||
|
|
||||||
do { *pd++=*ps++; } while (pd<end);
|
do { *pd++=0xf800;/**ps++;*/ } while (pd<end);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -69,7 +66,6 @@ int EmuFrame()
|
||||||
|
|
||||||
PicoPad[0]=input;
|
PicoPad[0]=input;
|
||||||
|
|
||||||
frame++;
|
|
||||||
PsndOut=(short *)DSoundNext; PicoFrame(); PsndOut=NULL;
|
PsndOut=(short *)DSoundNext; PicoFrame(); PsndOut=NULL;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -2,13 +2,6 @@
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
#include <commdlg.h>
|
#include <commdlg.h>
|
||||||
|
|
||||||
extern char *romname;
|
|
||||||
extern unsigned char *rom_data;
|
|
||||||
extern unsigned int rom_size;
|
|
||||||
extern int fastForward;
|
|
||||||
extern int frameStep;
|
|
||||||
extern int emu_frame;
|
|
||||||
|
|
||||||
struct Input Inp;
|
struct Input Inp;
|
||||||
|
|
||||||
// --------------------- XBox Input -----------------------------
|
// --------------------- XBox Input -----------------------------
|
||||||
|
@ -123,25 +116,27 @@ static int DeviceRead()
|
||||||
else if(!sblobked && GetAsyncKeyState(VK_TAB)) {
|
else if(!sblobked && GetAsyncKeyState(VK_TAB)) {
|
||||||
PicoReset(0);
|
PicoReset(0);
|
||||||
sblobked = 1;
|
sblobked = 1;
|
||||||
emu_frame = 0;
|
|
||||||
}
|
}
|
||||||
else if(!sblobked && GetAsyncKeyState(VK_ESCAPE)) {
|
else if(!sblobked && GetAsyncKeyState(VK_ESCAPE))
|
||||||
DSoundMute();
|
{
|
||||||
|
unsigned char *rom_data;
|
||||||
|
unsigned int rom_size;
|
||||||
|
DSoundMute();
|
||||||
pm_file *rom = 0;
|
pm_file *rom = 0;
|
||||||
OPENFILENAME of; ZeroMemory(&of, sizeof(OPENFILENAME));
|
OPENFILENAME of; ZeroMemory(&of, sizeof(OPENFILENAME));
|
||||||
of.lStructSize = sizeof(OPENFILENAME);
|
of.lStructSize = sizeof(OPENFILENAME);
|
||||||
of.lpstrFilter = "ROMs\0*.smd;*.bin;*.gen\0";
|
of.lpstrFilter = "ROMs\0*.smd;*.bin;*.gen\0";
|
||||||
of.lpstrFile = romname; romname[0] = 0;
|
of.lpstrFile = romname; romname[0] = 0;
|
||||||
of.nMaxFile = MAX_PATH;
|
of.nMaxFile = MAX_PATH;
|
||||||
of.Flags = OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;
|
of.Flags = OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;
|
||||||
GetOpenFileName(&of);
|
GetOpenFileName(&of);
|
||||||
rom = pm_open(romname);
|
rom = pm_open(romname);
|
||||||
DSoundUnMute();
|
DSoundUnMute();
|
||||||
if(!rom) return 1;
|
if(!rom) return 1;
|
||||||
PicoCartLoad(rom, &rom_data, &rom_size);
|
PicoCartLoad(rom, &rom_data, &rom_size);
|
||||||
PicoCartInsert(rom_data, rom_size);
|
PicoCartInsert(rom_data, rom_size);
|
||||||
pm_close(rom);
|
pm_close(rom);
|
||||||
sblobked = 1;
|
sblobked = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sblobked = GetAsyncKeyState(VK_F6) | GetAsyncKeyState(VK_F9) |
|
sblobked = GetAsyncKeyState(VK_F6) | GetAsyncKeyState(VK_F9) |
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
//#include "FileMenu.h"
|
//#include "FileMenu.h"
|
||||||
|
|
||||||
extern char *romname;
|
|
||||||
int fastForward=0;
|
|
||||||
int frameStep=0;
|
|
||||||
|
|
||||||
char LoopQuit=0;
|
char LoopQuit=0;
|
||||||
static FILE *DebugFile=NULL;
|
static FILE *DebugFile=NULL;
|
||||||
int LoopMode=0;
|
int LoopMode=0;
|
||||||
|
@ -17,9 +13,8 @@ int LoopInit()
|
||||||
// bits LSb->MSb:
|
// bits LSb->MSb:
|
||||||
// enable_ym2612&dac, enable_sn76496, enable_z80, stereo_sound;
|
// enable_ym2612&dac, enable_sn76496, enable_z80, stereo_sound;
|
||||||
// alt_renderer, 6button_gamepad, accurate_timing, accurate_sprites
|
// alt_renderer, 6button_gamepad, accurate_timing, accurate_sprites
|
||||||
PicoOpt=0x1f;
|
PicoOpt=0xbccf;
|
||||||
PsndRate=44100;
|
PsndRate=44100;
|
||||||
//PsndLen=PsndRate/60; // calculated later by pico itself
|
|
||||||
|
|
||||||
// Init Direct3D:
|
// Init Direct3D:
|
||||||
ret=DirectInit(); if (ret) { error("Direct3D init failed"); return 1; }
|
ret=DirectInit(); if (ret) { error("Direct3D init failed"); return 1; }
|
||||||
|
@ -55,18 +50,9 @@ void LoopExit()
|
||||||
|
|
||||||
// ----------------------------------------------------------------
|
// ----------------------------------------------------------------
|
||||||
|
|
||||||
int emu_frame = 0;
|
|
||||||
|
|
||||||
static int DoGame()
|
static int DoGame()
|
||||||
{
|
{
|
||||||
if(fastForward) { PicoSkipFrame+=1; PicoSkipFrame&=7; }
|
|
||||||
else PicoSkipFrame=0;
|
|
||||||
|
|
||||||
if(frameStep==1) return 0;
|
|
||||||
else if(frameStep==3) frameStep=1;
|
|
||||||
|
|
||||||
EmuFrame();
|
EmuFrame();
|
||||||
emu_frame++;
|
|
||||||
|
|
||||||
if (Inp.held[7]==1) LoopMode=2; // Right thumb = Toggle Menu
|
if (Inp.held[7]==1) LoopMode=2; // Right thumb = Toggle Menu
|
||||||
|
|
||||||
|
@ -144,9 +130,8 @@ static int ModeRender()
|
||||||
|
|
||||||
static void UpdateSound(int len)
|
static void UpdateSound(int len)
|
||||||
{
|
{
|
||||||
if(fastForward) return;
|
while (DSoundUpdate() > 0) { Sleep(1); }
|
||||||
while (DSoundUpdate()) { Sleep(1); }
|
while (DSoundUpdate()== 0) { }
|
||||||
while (DSoundUpdate()==0) { }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int LoopCode()
|
int LoopCode()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
|
#include "version.h"
|
||||||
#include <crtdbg.h>
|
#include <crtdbg.h>
|
||||||
#include <commdlg.h>
|
#include <commdlg.h>
|
||||||
|
|
||||||
|
@ -8,42 +8,6 @@ HWND FrameWnd=NULL;
|
||||||
|
|
||||||
int MainWidth=720,MainHeight=480;
|
int MainWidth=720,MainHeight=480;
|
||||||
|
|
||||||
char AppName[]="GenaDrive";
|
|
||||||
|
|
||||||
#ifdef STARSCREAM
|
|
||||||
extern "C" int SekReset();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ------------------------------------ XBox Main ------------------------------------------
|
|
||||||
#ifdef _XBOX
|
|
||||||
|
|
||||||
static int MainCode()
|
|
||||||
{
|
|
||||||
int ret=0;
|
|
||||||
|
|
||||||
ret=LoopInit(); if (ret) { LoopExit(); return 1; }
|
|
||||||
|
|
||||||
LoopQuit=0; LoopCode();
|
|
||||||
LoopExit();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int __cdecl main()
|
|
||||||
{
|
|
||||||
LD_LAUNCH_DASHBOARD launch;
|
|
||||||
|
|
||||||
MainCode();
|
|
||||||
|
|
||||||
// Go back to dashboard:
|
|
||||||
memset(&launch,0,sizeof(launch));
|
|
||||||
launch.dwReason=XLD_LAUNCH_DASHBOARD_MAIN_MENU;
|
|
||||||
XLaunchNewImage(NULL,(LAUNCH_DATA *)&launch);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ----------------------------------- Windows Main ----------------------------------------
|
|
||||||
#ifndef _XBOX
|
|
||||||
// Window proc for the frame window:
|
// Window proc for the frame window:
|
||||||
static LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
|
static LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
|
||||||
{
|
{
|
||||||
|
@ -88,7 +52,7 @@ static int FrameInit()
|
||||||
top-=height; top>>=1;
|
top-=height; top>>=1;
|
||||||
|
|
||||||
// Create the window:
|
// Create the window:
|
||||||
FrameWnd=CreateWindow(wc.lpszClassName,AppName,style|WS_VISIBLE,
|
FrameWnd=CreateWindow(wc.lpszClassName,"PicoDrive " VERSION,style|WS_VISIBLE,
|
||||||
left,top,width,height,NULL,NULL,NULL,NULL);
|
left,top,width,height,NULL,NULL,NULL,NULL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -102,19 +66,17 @@ static DWORD WINAPI ThreadCode(void *)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// starscream needs this
|
|
||||||
unsigned char *rom_data = 0;
|
|
||||||
unsigned int rom_size = 0;
|
|
||||||
|
|
||||||
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR cmdline,int)
|
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR cmdline,int)
|
||||||
{
|
{
|
||||||
MSG msg;
|
MSG msg;
|
||||||
int ret=0;
|
int ret=0;
|
||||||
DWORD tid=0;
|
DWORD tid=0;
|
||||||
HANDLE thread=NULL;
|
HANDLE thread=NULL;
|
||||||
|
unsigned char *rom_data = 0;
|
||||||
|
unsigned int rom_size = 0;
|
||||||
|
|
||||||
FrameInit();
|
FrameInit();
|
||||||
ret=LoopInit(); if (ret) { LoopExit(); return 1; }
|
ret=LoopInit(); if (ret) goto end0;
|
||||||
|
|
||||||
// notaz: load rom
|
// notaz: load rom
|
||||||
static char rompath[MAX_PATH]; rompath[0] = 0;
|
static char rompath[MAX_PATH]; rompath[0] = 0;
|
||||||
|
@ -125,27 +87,29 @@ int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR cmdline,int)
|
||||||
if(strlen(rompath) > 4) rom = pm_open(rompath);
|
if(strlen(rompath) > 4) rom = pm_open(rompath);
|
||||||
if(!rom) {
|
if(!rom) {
|
||||||
OPENFILENAME of; ZeroMemory(&of, sizeof(OPENFILENAME));
|
OPENFILENAME of; ZeroMemory(&of, sizeof(OPENFILENAME));
|
||||||
of.lStructSize = sizeof(OPENFILENAME);
|
of.lStructSize = sizeof(OPENFILENAME);
|
||||||
of.lpstrFilter = "ROMs\0*.smd;*.bin;*.gen\0";
|
of.lpstrFilter = "ROMs\0*.smd;*.bin;*.gen;*.zip\0";
|
||||||
of.lpstrFile = rompath; rompath[0] = 0;
|
of.lpstrFile = rompath; rompath[0] = 0;
|
||||||
of.nMaxFile = MAX_PATH;
|
of.nMaxFile = MAX_PATH;
|
||||||
of.Flags = OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;
|
of.Flags = OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;
|
||||||
if(!GetOpenFileName(&of)) return 1;
|
if(!GetOpenFileName(&of)) goto end0;
|
||||||
rom = pm_open(rompath);
|
rom = pm_open(rompath);
|
||||||
if(!rom) return 1;
|
if(!rom) goto end0;
|
||||||
}
|
}
|
||||||
romname = rompath;
|
romname = rompath;
|
||||||
|
|
||||||
if(PicoCartLoad(rom, &rom_data, &rom_size)) {
|
ret=PicoCartLoad(rom, &rom_data, &rom_size);
|
||||||
//RDebug::Print(_L("PicoCartLoad() failed."));
|
|
||||||
//goto cleanup;
|
|
||||||
}
|
|
||||||
pm_close(rom);
|
pm_close(rom);
|
||||||
|
if (ret) {
|
||||||
|
error("failed to load ROM");
|
||||||
|
goto end0;
|
||||||
|
}
|
||||||
|
|
||||||
PicoCartInsert(rom_data, rom_size);
|
PicoCartInsert(rom_data, rom_size);
|
||||||
|
|
||||||
// only now we got the mode (pal/ntsc), so init sound now
|
// only now we got the mode (pal/ntsc), so init sound now
|
||||||
DSoundInit();
|
ret=DSoundInit();
|
||||||
|
if (ret) error("Failed to init DirectSound"); // warning
|
||||||
|
|
||||||
// Make another thread to run LoopCode():
|
// Make another thread to run LoopCode():
|
||||||
LoopQuit=0;
|
LoopQuit=0;
|
||||||
|
@ -165,6 +129,7 @@ int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR cmdline,int)
|
||||||
LoopQuit=1; WaitForSingleObject(thread,5000);
|
LoopQuit=1; WaitForSingleObject(thread,5000);
|
||||||
CloseHandle(thread); thread=NULL;
|
CloseHandle(thread); thread=NULL;
|
||||||
|
|
||||||
|
end0:
|
||||||
LoopExit();
|
LoopExit();
|
||||||
DestroyWindow(FrameWnd);
|
DestroyWindow(FrameWnd);
|
||||||
|
|
||||||
|
@ -178,5 +143,4 @@ extern void error(char *text)
|
||||||
{
|
{
|
||||||
MessageBox(FrameWnd, text, "Error", 0);
|
MessageBox(FrameWnd, text, "Error", 0);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,8 @@ int TexScreenLinear()
|
||||||
int y=0,line=0;
|
int y=0,line=0;
|
||||||
unsigned short *ps=NULL;
|
unsigned short *ps=NULL;
|
||||||
|
|
||||||
TexScreen->LockRect(0,&lock,NULL,0); if (lock.pBits==NULL) return 1;
|
TexScreen->LockRect(0,&lock,NULL,0);
|
||||||
|
if (lock.pBits==NULL) return 1;
|
||||||
|
|
||||||
dest=(unsigned char *)lock.pBits;
|
dest=(unsigned char *)lock.pBits;
|
||||||
ps=EmuScreen;
|
ps=EmuScreen;
|
||||||
|
@ -98,7 +99,7 @@ int TexScreenLinear()
|
||||||
|
|
||||||
for (x=0; x<EmuWidth; x++,addr+=2)
|
for (x=0; x<EmuWidth; x++,addr+=2)
|
||||||
{
|
{
|
||||||
*(unsigned int *)(dest+addr)=*ps++;
|
*(unsigned int *)(dest+addr)=0xf0f0f0f0;//*ps++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,9 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#ifdef _XBOX
|
|
||||||
#include <xtl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef _XBOX
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <d3d8.h>
|
#include <d3d8.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <d3dx8.h>
|
#include <d3dx8.h>
|
||||||
|
|
||||||
|
@ -19,11 +13,6 @@
|
||||||
|
|
||||||
#define RELEASE(x) if (x) x->Release(); x=NULL;
|
#define RELEASE(x) if (x) x->Release(); x=NULL;
|
||||||
|
|
||||||
#ifdef _XBOX
|
|
||||||
#define HOME "d:\\"
|
|
||||||
#else
|
|
||||||
#define HOME ".\\"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Emu.cpp
|
// Emu.cpp
|
||||||
extern unsigned short *EmuScreen;
|
extern unsigned short *EmuScreen;
|
||||||
|
@ -63,9 +52,9 @@ int LoopCode();
|
||||||
extern "C" int dprintf2(char *format, ...);
|
extern "C" int dprintf2(char *format, ...);
|
||||||
|
|
||||||
// Main.cpp
|
// Main.cpp
|
||||||
|
extern char *romname;
|
||||||
extern HWND FrameWnd;
|
extern HWND FrameWnd;
|
||||||
extern int MainWidth,MainHeight;
|
extern int MainWidth,MainHeight;
|
||||||
extern char AppName[];
|
|
||||||
extern void error(char *text);
|
extern void error(char *text);
|
||||||
|
|
||||||
// Rom.cpp
|
// Rom.cpp
|
||||||
|
|
2
platform/win32/GenaDrive/version.h
Normal file
2
platform/win32/GenaDrive/version.h
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#define VERSION "1.40"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue