mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
giz alpha1 release
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@259 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
fd34fdd0f4
commit
2ec14aec8f
5 changed files with 107 additions and 44 deletions
|
@ -15,9 +15,9 @@ amalgamate = 0
|
|||
|
||||
|
||||
DEFINC = -I../.. -I. -D__GIZ__ -D_UNZIP_SUPPORT -DNO_SYNC
|
||||
COPT_COMMON = -static -Wall -Winline
|
||||
COPT_COMMON = -Wall -Winline
|
||||
ifeq ($(DEBUG),)
|
||||
COPT_COMMON += -O2 -ftracer -fstrength-reduce -fomit-frame-pointer -fstrict-aliasing -ffast-math
|
||||
COPT_COMMON += -O2 -ftracer -fomit-frame-pointer -fstrict-aliasing -ffast-math
|
||||
else
|
||||
COPT_COMMON += -ggdb
|
||||
endif
|
||||
|
@ -105,16 +105,16 @@ OBJS += ../../cpu/DrZ80/drz80.o
|
|||
all: PicoDrive.exe
|
||||
|
||||
PicoDrive.exe : $(OBJS)
|
||||
@echo $@
|
||||
@$(GCC) -o $@ $(COPT) $^ -lm -lpng -Lkgsdk/ -lKGSDK -Wl,-Map=PicoDrive.map
|
||||
@echo ">>>" $@
|
||||
$(GCC) -o $@ -static $(COPT) $^ -lm -lpng -Lkgsdk/ -lKGSDK -Wl,-Map=PicoDrive.map
|
||||
ifeq ($(DEBUG),)
|
||||
@$(STRIP) $@
|
||||
$(STRIP) $@
|
||||
endif
|
||||
|
||||
|
||||
.c.o:
|
||||
@echo $<
|
||||
@$(GCC) $(COPT) $(DEFINC) -c $< -o $@
|
||||
@echo ">>>" $<
|
||||
$(GCC) $(COPT) $(DEFINC) -c $< -o $@
|
||||
#.s.o:
|
||||
# @echo $<
|
||||
# $(GCC) $(COPT) $(DEFINC) -c $< -o $@
|
||||
|
@ -181,7 +181,9 @@ $(error need VER)
|
|||
endif
|
||||
endif
|
||||
|
||||
rel: PicoDrive.exe kgsdk/ARMV4IRel/KGSDK.dll ../readme.txt config.txt
|
||||
rel: PicoDrive.exe kgsdk/ARMV4IRel/KGSDK.dll # ../readme.txt config.txt
|
||||
zip -9 -j ../../PicoDrive_$(VER).zip $^
|
||||
ln -s ../gp2x/skin skin
|
||||
zip -9 -r ../../PicoDrive_$(VER).zip skin -i \*.png -i \*.txt
|
||||
rm skin
|
||||
|
||||
|
|
|
@ -8,8 +8,10 @@ vidCpy8to16_40:
|
|||
|
||||
mov r3, r3, lsr #1
|
||||
orr r3, r3, r3, lsl #8
|
||||
add r1, r1, #8
|
||||
orr r3, r3, #(320/8-1)<<24
|
||||
add r1, r1, #8
|
||||
mov lr, #0xff
|
||||
mov lr, lr, lsl #1
|
||||
|
||||
@ even lines
|
||||
vcloop_40_aligned:
|
||||
|
@ -63,10 +65,6 @@ vcloop_40_aligned:
|
|||
mul r4, r5, r6
|
||||
sub r1, r1, r4
|
||||
|
||||
@ FIXME FIXME FIXME
|
||||
ldmfd sp!, {r4-r9,lr}
|
||||
bx lr
|
||||
|
||||
vcloop_40_unaligned:
|
||||
ldr r12, [r1], #4
|
||||
ldr r7, [r1], #4
|
||||
|
@ -75,7 +73,7 @@ vcloop_40_unaligned:
|
|||
ldrh r4, [r2, r4]
|
||||
and r5, lr, r12, lsr #7
|
||||
ldrh r5, [r2, r5]
|
||||
strh r4, [r0]!
|
||||
strh r4, [r0], #2
|
||||
and r6, lr, r12, lsr #15
|
||||
ldrh r6, [r2, r6]
|
||||
|
||||
|
@ -94,12 +92,12 @@ vcloop_40_unaligned:
|
|||
ldrh r12,[r2, r12]
|
||||
|
||||
and r4, lr, r7, lsr #23
|
||||
ldrh r4, [r2, r6]
|
||||
ldrh r4, [r2, r4]
|
||||
orr r12,r6, r12,lsl #16
|
||||
subs r3, r3, #1<<24
|
||||
|
||||
stmia r0!, {r5,r8,r12}
|
||||
strh r4, [r0]!
|
||||
strh r4, [r0], #2
|
||||
bpl vcloop_40_unaligned
|
||||
|
||||
add r1, r1, #336 @ skip a line and 1 col
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
#include <windows.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <sys/stat.h> // mkdir
|
||||
#include <sys/types.h>
|
||||
|
||||
#include "kgsdk/Framework.h"
|
||||
#include "kgsdk/Framework2D.h"
|
||||
#include "kgsdk/FrameworkAudio.h"
|
||||
#include "../common/emu.h"
|
||||
|
@ -73,10 +77,10 @@ static void emu_msg_tray_open(void)
|
|||
void emu_Init(void)
|
||||
{
|
||||
// make dirs for saves, cfgs, etc.
|
||||
CreateDirectory(L"mds", NULL);
|
||||
CreateDirectory(L"srm", NULL);
|
||||
CreateDirectory(L"brm", NULL);
|
||||
CreateDirectory(L"cfg", NULL);
|
||||
mkdir("mds", 0777);
|
||||
mkdir("srm", 0777);
|
||||
mkdir("brm", 0777);
|
||||
mkdir("cfg", 0777);
|
||||
|
||||
PicoInit();
|
||||
PicoMessage = emu_msg_cb;
|
||||
|
@ -127,8 +131,7 @@ void emu_setDefaultConfig(void)
|
|||
currentConfig.KeyBinds[ 5] = 1<<4;
|
||||
currentConfig.KeyBinds[ 6] = 1<<5;
|
||||
currentConfig.KeyBinds[ 7] = 1<<6;
|
||||
currentConfig.KeyBinds[ 8] = 1<<7;
|
||||
currentConfig.KeyBinds[ 4] = 1<<26; // switch rend
|
||||
currentConfig.KeyBinds[ 4] = 1<<7;
|
||||
currentConfig.KeyBinds[ 8] = 1<<27; // save state
|
||||
currentConfig.KeyBinds[ 9] = 1<<28; // load state
|
||||
currentConfig.KeyBinds[12] = 1<<29; // vol up
|
||||
|
@ -150,7 +153,7 @@ static int EmuScan8(unsigned int num, void *sdata)
|
|||
{
|
||||
// draw like the fast renderer
|
||||
if (!(Pico.video.reg[1]&8)) num += 8;
|
||||
HighCol = gfx_buffer + 328*8 + 328*(num+1);
|
||||
HighCol = gfx_buffer + 328*(num+1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -172,12 +175,6 @@ static void osd_text(int x, int y, const char *text)
|
|||
short localPal[0x100];
|
||||
static void (*vidCpy8to16)(void *dest, void *src, short *pal, int lines) = NULL;
|
||||
|
||||
// FIXME: rm
|
||||
static void vidCpy8to16_(void *dest, void *src, short *pal, int lines)
|
||||
{
|
||||
vidCpy8to16(dest, src, pal, lines);
|
||||
}
|
||||
|
||||
static void blit(const char *fps, const char *notice)
|
||||
{
|
||||
int emu_opt = currentConfig.EmuOpt;
|
||||
|
@ -188,16 +185,16 @@ static void blit(const char *fps, const char *notice)
|
|||
Pico.m.dirtyPal = 0;
|
||||
vidConvCpyRGB565(localPal, Pico.cram, 0x40);
|
||||
}
|
||||
vidCpy8to16_((unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8, localPal, 224);
|
||||
vidCpy8to16((unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8, localPal, 224);
|
||||
} else if (!(emu_opt&0x80)) {
|
||||
// 8bit accurate renderer
|
||||
if (Pico.m.dirtyPal) {
|
||||
Pico.m.dirtyPal = 0;
|
||||
vidConvCpyRGB565(localPal, Pico.cram, 0x40);
|
||||
if(Pico.video.reg[0xC]&8) { // shadow/hilight mode
|
||||
if (Pico.video.reg[0xC]&8) { // shadow/hilight mode
|
||||
//vidConvCpyRGB32sh(localPal+0x40, Pico.cram, 0x40);
|
||||
//vidConvCpyRGB32hi(localPal+0x80, Pico.cram, 0x40); // TODO
|
||||
blockcpy(localPal+0xc0, localPal+0x40, 0x40*4);
|
||||
blockcpy(localPal+0xc0, localPal+0x40, 0x40*2);
|
||||
localPal[0xc0] = 0x0600;
|
||||
localPal[0xd0] = 0xc000;
|
||||
localPal[0xe0] = 0x0000; // reserved pixels for OSD
|
||||
|
@ -211,7 +208,7 @@ static void blit(const char *fps, const char *notice)
|
|||
}
|
||||
// TODO...
|
||||
//lprintf("vidCpy8to16 %p %p\n", (unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8);
|
||||
vidCpy8to16_((unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8, localPal, 224);
|
||||
vidCpy8to16((unsigned short *)giz_screen+321*8, PicoDraw2FB+328*8, localPal, 224);
|
||||
//lprintf("after vidCpy8to16\n");
|
||||
}
|
||||
|
||||
|
@ -289,6 +286,68 @@ void emu_forcedFrame(void)
|
|||
|
||||
static void updateKeys(void)
|
||||
{
|
||||
unsigned int keys, allActions[2] = { 0, 0 }, events;
|
||||
static unsigned int prevEvents = 0;
|
||||
int i;
|
||||
|
||||
keys = Framework_PollGetButtons();
|
||||
if (keys & BTN_HOME) {
|
||||
engineState = PGS_Menu;
|
||||
// wait until select is released, so menu would not resume game
|
||||
while (Framework_PollGetButtons() & BTN_HOME) Sleep(50);
|
||||
}
|
||||
|
||||
keys &= CONFIGURABLE_KEYS;
|
||||
|
||||
for (i = 0; i < 32; i++)
|
||||
{
|
||||
if (keys & (1 << i)) {
|
||||
int pl, acts = currentConfig.KeyBinds[i];
|
||||
if (!acts) continue;
|
||||
pl = (acts >> 16) & 1;
|
||||
/* TODO if (combo_keys & (1 << i)) {
|
||||
int u = i+1, acts_c = acts & combo_acts;
|
||||
// let's try to find the other one
|
||||
if (acts_c)
|
||||
for (; u < 32; u++)
|
||||
if ( (currentConfig.KeyBinds[u] & acts_c) && (keys & (1 << u)) ) {
|
||||
allActions[pl] |= acts_c;
|
||||
keys &= ~((1 << i) | (1 << u));
|
||||
break;
|
||||
}
|
||||
// add non-combo actions if combo ones were not found
|
||||
if (!acts_c || u == 32)
|
||||
allActions[pl] |= acts & ~combo_acts;
|
||||
} else */ {
|
||||
allActions[pl] |= acts;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PicoPad[0] = (unsigned short) allActions[0];
|
||||
PicoPad[1] = (unsigned short) allActions[1];
|
||||
|
||||
events = (allActions[0] | allActions[1]) >> 16;
|
||||
|
||||
// volume is treated in special way and triggered every frame
|
||||
if (events & 0x6000) {
|
||||
int vol = currentConfig.volume;
|
||||
if (events & 0x2000) {
|
||||
if (vol < 100) vol++;
|
||||
} else {
|
||||
if (vol > 0) vol--;
|
||||
}
|
||||
//gp2x_sound_volume(vol, vol);
|
||||
sprintf(noticeMsg, "VOL: %02i", vol);
|
||||
noticeMsgTime = GetTickCount();
|
||||
currentConfig.volume = vol;
|
||||
}
|
||||
|
||||
events &= ~prevEvents;
|
||||
//if (events) RunEvents(events); // TODO
|
||||
if (movie_data) emu_updateMovie();
|
||||
|
||||
prevEvents = (allActions[0] | allActions[1]) >> 16;
|
||||
}
|
||||
|
||||
static void simpleWait(DWORD until)
|
||||
|
|
|
@ -116,7 +116,7 @@ static void load_progress_cb(int percent)
|
|||
dst = (unsigned short *)menu_screen + 321*20;
|
||||
|
||||
if (len > 320) len = 320;
|
||||
for (ln = 10; ln > 0; ln--, dst += 320)
|
||||
for (ln = 10; ln > 0; ln--, dst += 321)
|
||||
memset(dst, 0xff, len*2);
|
||||
menu_draw_end();
|
||||
}
|
||||
|
@ -1002,7 +1002,7 @@ static void amenu_loop_options(void)
|
|||
if (inp & (BTN_LEFT|BTN_RIGHT)) { // multi choise
|
||||
if (!me_process(opt2_entries, OPT2_ENTRY_COUNT, selected_id, (inp&BTN_RIGHT) ? 1 : 0) &&
|
||||
selected_id == MA_OPT2_GAMMA) {
|
||||
while ((inp = Framework_PollGetButtons(1)) & (BTN_LEFT|BTN_RIGHT)) {
|
||||
while ((inp = Framework_PollGetButtons()) & (BTN_LEFT|BTN_RIGHT)) {
|
||||
currentConfig.gamma += (inp & BTN_LEFT) ? -1 : 1;
|
||||
if (currentConfig.gamma < 1) currentConfig.gamma = 1;
|
||||
if (currentConfig.gamma > 300) currentConfig.gamma = 300;
|
||||
|
@ -1314,6 +1314,7 @@ static void draw_menu_credits(void)
|
|||
menu_draw_begin(1);
|
||||
|
||||
text_out16(tl_x, 20, "PicoDrive v" VERSION " (c) notaz, 2006,2007");
|
||||
text_out16(tl_x, 30, "alpha1");
|
||||
y = tl_y;
|
||||
text_out16(tl_x, y, "Credits:");
|
||||
text_out16(tl_x, (y+=10), "Dave: Cyclone 68000 core,");
|
||||
|
@ -1324,8 +1325,8 @@ static void draw_menu_credits(void)
|
|||
text_out16(tl_x, (y+=10), "Stephane Dallongeville:");
|
||||
text_out16(tl_x, (y+=10), " opensource Gens");
|
||||
text_out16(tl_x, (y+=10), "Haze: Genesis hw info");
|
||||
text_out16(tl_x, (y+=10), "Reesy: TODO");
|
||||
text_out16(tl_x, (y+=10), "TODO: gizmondo hardware");
|
||||
text_out16(tl_x, (y+=10), "Reesy: kgsdk wrapper, sound code");
|
||||
text_out16(tl_x, (y+=10), "jens.l: gizmondo hardware");
|
||||
text_out16(tl_x, (y+=10), "ketchupgun: skin design");
|
||||
|
||||
menu_draw_end();
|
||||
|
@ -1389,7 +1390,7 @@ static void menu_loop_root(void)
|
|||
/* make sure action buttons are not pressed on entering menu */
|
||||
draw_menu_root(menu_sel);
|
||||
|
||||
while (Framework_PollGetButtons(1) & (BTN_PLAY|BTN_STOP|BTN_HOME)) Sleep(50);
|
||||
while (Framework_PollGetButtons() & (BTN_PLAY|BTN_STOP|BTN_HOME)) Sleep(50);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
|
@ -1399,7 +1400,7 @@ static void menu_loop_root(void)
|
|||
if(inp & BTN_DOWN) { menu_sel++; if (menu_sel > menu_sel_max) menu_sel = 0; }
|
||||
if(inp &(BTN_HOME|BTN_STOP)){
|
||||
if (rom_data) {
|
||||
while (Framework_PollGetButtons(1) & (BTN_HOME|BTN_STOP)) Sleep(50); // wait until select is released
|
||||
while (Framework_PollGetButtons() & (BTN_HOME|BTN_STOP)) Sleep(50); // wait until released
|
||||
engineState = PGS_Running;
|
||||
break;
|
||||
}
|
||||
|
@ -1409,7 +1410,7 @@ static void menu_loop_root(void)
|
|||
{
|
||||
case MA_MAIN_RESUME_GAME:
|
||||
if (rom_data) {
|
||||
while (Framework_PollGetButtons(1) & BTN_PLAY) Sleep(50);
|
||||
while (Framework_PollGetButtons() & BTN_PLAY) Sleep(50);
|
||||
engineState = PGS_Running;
|
||||
return;
|
||||
}
|
||||
|
@ -1519,10 +1520,13 @@ static void menu_prepare_bg(int use_game_bg)
|
|||
if (use_game_bg)
|
||||
{
|
||||
// darken the active framebuffer
|
||||
// TODO: take from somewhere else, not giz_screen
|
||||
if (giz_screen == NULL)
|
||||
giz_screen = Framework2D_LockBuffer();
|
||||
memset(bg_buffer, 0, 321*8*2);
|
||||
menu_darken_bg(bg_buffer + 321*8*2, (char *)giz_screen + 321*8*2, 321*224, 1);
|
||||
memset(bg_buffer + 321*232*2, 0, 321*8*2);
|
||||
Framework2D_UnlockBuffer();
|
||||
giz_screen = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1598,7 +1602,7 @@ int menu_loop_tray(void)
|
|||
|
||||
/* make sure action buttons are not pressed on entering menu */
|
||||
draw_menu_tray(menu_sel);
|
||||
while (Framework_PollGetButtons(1) & BTN_PLAY) Sleep(50);
|
||||
while (Framework_PollGetButtons() & BTN_PLAY) Sleep(50);
|
||||
|
||||
for (;;)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue