Release REICAST - Dreamcast Emulator


ptitSeb

Serial Porter
Joined
Aug 15, 2012
Messages
9,306
Age
51
Location
France, near Lyon
Here is REICAST, a Dreamcast emulator.

preview1.png
This version is for now Alpha version. So expect Crashes!

Also, there is no GUI for now, so I just used some simple zenity dialog to choose gdrom file image.
You will need BIOS file for this to start (2 files, dc_bios.bin, 2Mo and dc_flash.bin 128ko).
For the VMU, 2 blank VMU will be created at 1st start. Go to BIOS to format them (to launch BIOS, cancel the zenity file picker dialog).
A wiki is open here, please update with your results: http://pandorawiki.org/Reicast_Compatibility_List

Sources can be found here: https://github.com/reicast/reicast-emulator

In-game key:
  • Use "f" to switch frameskip off/1/2/3 (off by default)
  • Use "s" to switch sound (on by default)
  • Use "w" to swap dpad / left nub function
  • Use "a" to switch left nub accuracy from accurate / fast (accurate by default)
  • Use "c" to show/hide Performance info (default to hide).
Still no OSD for now


/!\
This Software put lots of pressure on the CPU and GPU.

You will have crash on high Overclock
GPU Driver is a sentivite mater here.
For Gigahertz model, use at least v4.03.002 version
For Rebirth model, use 4.03.002 or a 4.04
For CC, use 4.04 or 4.00
/!\


History log
=========

build 14
-----------

  • Updated sources to r8.1
build 13
-----------

  • Updated sources
  • Improve "f" frameskip. Now it canbe Off or force to skip 1 to 4 frames
  • Added "w" to swap DPad and LeftNub function
  • Added "a" to switch the precision of the left nub. Default to Accurate.
  • Improved speed with Sound on. Almost same speed as with sound off.
build 12
-----------

  • Updated sources
build 11
-----------

  • In synch with official sources
build 10
-----------

  • In synch with official sources
  • Added back the frameskip "f" option (probably usefull only for CC / Rebirth model).
build 09
-----------

  • In synch with official sources
build 08
-----------

  • In synch with official r6 release
  • No microphone support for now
  • Remove "f" for frameskip as it was not efficient.
  • You still have "s", "n" and "c" with some OSD infos :)
build 07
-----------

  • Fixed Right Nub. "n" has an effect now.
build 06
-----------

  • Now with some OSD messages
  • Use "c" to have some perf counter on screen
  • Try to make the Left nub less sensitive
build 05
-----------

  • this build had broken left nub, grab build 06.
build 04
-----------

  • In synch with r6 release
  • Added a few opcode to dynarec, optimized by cal84maniac
  • Better Zenity menu, thanks to dgame
  • Right Nub can be configured on the flyUse "n" to silently switch mode
  • Mode are "none", "up/down->R/L", "left/right->L/R", "ABXY"
build 03
-----------

  • NVRam is now saved at exit
  • A few other minor things
build 02
-----------

  • improved zenity dialog
  • few small changes

build 01
----------

  • Initial build
  • Controls fully customized to the Pandora
  • Analog Controls works
  • Fullscreen & Sound
  • VMU enabled

For the curious, the diff of the current Pandora against git is there: reicast_pandora.tgz (there are a few useless changes that I should clean up... I'll do it at next update probably).
 
Last edited:
Is there a pnd or firmware to update the gpu driver rather than having to use command line prompts
 
That is command line not just an update dont like dipping into the unknown
 
I know it's still early, but is there a way for RIECAST to automatically switch to the proper regional bios for games?  I have mixed bag of Pal, US, and Jap games for my modded Dreamcast in the early days.  It is a pain now in RIECAST to manually copy a replace correct region bios.
 
I have come to the conclusion if you have a cc pandora this is a waste of time tried updating 4.00 is the default and struggles to render 1/4 of the screen at very low framerate 4.04 and 4.03 garbles up the text to green characters and renders the screen at low framerate with blackened graphics tested soul calibur on cc pandora oc to 1ghz
 
On the 1 Ghz the 4.03 GPU/SGX driver seems faster but it does not do the lighting effects correctly. In Skies of Arcadia many of the visual lighting effects (lens flare, flashy magic, etc.) don't show up or are incorrect when using the 4.03 driver.

I use 4.10.00.01 found here:

I've prepared another installer with 4.10.00.01 driver a while ago, but didn't have a chance to properly test it. Instead of waiting forever I though maybe better I'll just post it:

http://notaz.gp2x.de/misc/pnd/sgx_drivers_r2.pnd

Note that you need to have SuperZaxxon 1.60rc or newer installed to use 4.10.00.01.
 
Last edited by a moderator:
I have an issue to report regarding it. Which is that its not saving the date and time after inputting it.
 
I have an issue to report regarding it. Which is that its not saving the date and time after inputting it.
indeed. It's an issue with the PND, Fat32 write access I guess... I'll look into that.

*EDIT* I think it works, but I'm not sure it likes 2013 dates... I have to dig...
 
Last edited by a moderator:
New release, just a few changes, and mainly the zenity dialog that remember the folder.

build 02

-----------

  • improved zenity dialog
  • few small changes
 
Here's its .out after loading its BIOS, entering a date and then exiting by using the Escape key:

=======================================================================================

PND             : /media/PANDORA-SD1/pandora/apps/reicast.pnd
PND_FSTYPE      : Squashfs
APPDATADIR      : /media/PANDORA-SD1/pandora/appdata/reicast
APPDD_FSTYPE    : vfat
PND_CPUSPEED    : <unset>
EXENAME         : runscript.sh
ARGUMENTS       : <unset>
=======================================================================================
[ START ]--- Mount the PND ----------
Mounting : mount -t squashfs -o ro "/dev/loop0" "/mnt/utmp/reicast"
Mounting the Union FS : mount -t aufs -o exec,noplink,dirs="/media/PANDORA-SD1/pandora/appdata/reicast=rw+nolwh":"/mnt/pnd/reicast=rr" none "/mnt/utmp/reicast"
[sUCCESS]--- Mount the PND ----------
[ START ]--- Starting the application ( runscript.sh  ) ----------
--------------------------------------------------------------
Setting PATH to /mnt/utmp/reicast:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games
--------------------------------------------------------------
Setting LD_LIBRARY_PATH to /mnt/utmp/reicast/lib:/lib:/usr/lib
No file selected.
System check
============
Freememory is 385
Cpu Speed is 600
Sys Speed is 332
./reicast.elf -config config:image=
SDK: Found 'nub0' joystick with 2 axis and 0 buttons
sound enabled, dsp openned for write
set Frequency to 44100, return 0 (rate=44100)
set dsp to stereo (2 => 0)
set dsp to 16bits signed audio (16/16 => 0)
set dsp fragment to 10512016 of 2 bytes (2000 => 131084)
Home dir is: ./
ARM VFP-Run Fast (NFP) enabled !
Linux paging: 00001000 00001000 00000FFF
common linux setup done
MAP 00800000 w/ 25165824
MAP 20000000 w/ 25165824
MAP 04000000 w/ 16777216
MAP 06000000 w/ 16777216
MAP 0C000000 w/ 0
A8
vmem reserve: base: 42970000, aram: 62970000, vram: 46970000, ram: 4E970000
Resetting mem
Mem alloc successful!Virtual cfg config:image=

Created SDL Windows (800x480) successfully
Loaded ./data/dc_bios.bin as bootrom

Loaded ./data/dc_flash.bin as nvram

Using Recompiler
recSh4 Init
@@    ngen_ResetBlocks()
Freeing fpcb

     CodeCache addr: 0x19d000 | from: 0x19c3b4 | addr here: 0x19b590
readm helpers: up to 0019D250
gdrom: Failed to open image ""

     ARM7_TCB addr: 0x55000 | from: 0x543a8 | addr here: 0x50f40
Info: EGL version 1.4
Sh4 Reset
cntx // fpcb offset: -33816576 // pc offset: -184 // pc A0000000
Get MemPtr not suported area ; addr=0xA0000000
Get MemPtr not suported area ; addr=0xA0000018
Sh4: i-cache invalidation A0000016
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at A0000016
Get MemPtr not suported area ; addr=0x80000080
Get MemPtr not suported area ; addr=0x800000A8
Get MemPtr not suported area ; addr=0x800000BE
Get MemPtr not suported area ; addr=0x800000C6
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at 8C0000DE
EGL config: 012342B0, 00000001, 012332D0 800x480
Invalid GD-DMA start, SB_GDEN=0.Ingoring it.
VREG = 03 ARMRST 00
VREG = 03 ARMRST 01
OSD: 420006
Error opening ./data/buttons.pngVREG = 03 ARMRST 00
sh4io: Invalid read access @@ 00000030
Sh4: i-cache invalidation 8C00DD78
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at 8C00DD78
bm_GetBlock(001A3FAC) failed ..
Stale block ..bm_GetBlock(001A3FAC) failed ..
 .. null RBI: 8C00DDA0 -- unlinked stale block
subc <REG_M>,<REG_N>
DIV32S matched 1% @ 0x8C00CF78
DIV32S matched 100% @ 0x8C00CF7E
div32s 1/0/3
Invalid GD-DMA start, SB_GDEN=0.Ingoring it.
Sh4: i-cache invalidation 8C09E6A6
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at 8C09E6A6
bm_GetBlock(0019F9F8) failed ..
Stale block ..bm_GetBlock(0019F9F8) failed ..
 .. null RBI: 8C09E6CE -- unlinked stale block
Sh4: i-cache invalidation AC09D990
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at AC09D990
VREG = 03 ARMRST 00
new tactx
new tactx
subc <REG_M>,<REG_N>
DIV32S matched 1% @ 0x8C091086
DIV32S matched 100% @ 0x8C09108C
div32s 1/0/3
movt <REG_N>
DIV32S matched 1% @ 0x8C0911E4
DIV32S matched 100% @ 0x8C0911EC
div32s 1/0/3
movt <REG_N>
DIV32S matched 1% @ 0x8C09126E
shar <REG_N>
DIV32S matched 1% @ 0x8C091278
VREG = 03 ARMRST 01
VREG = 03 ARMRST 01
VREG = 03 ARMRST 00
FOG TABLE Curve match: maxdev: 0.00 cents
new tactx
new tactx
Sh4: i-cache invalidation AC09EC6E
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at AC09EC6E
subc <REG_M>,<REG_N>
DIV32S matched 1% @ 0x8C00CF78
DIV32S matched 100% @ 0x8C00CF7E
div32s 1/0/3
movt <REG_N>
DIV32S matched 1% @ 0x8C00D0D6
DIV32S matched 100% @ 0x8C00D0DE
div32s 1/0/3
movt <REG_N>
DIV32S matched 1% @ 0x8C00D160
shar <REG_N>
DIV32S matched 1% @ 0x8C00D16A
Sh4: i-cache invalidation 8C00DD78
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at 8C00DD78
bm_GetBlock(001A39D0) failed ..
Stale block ..bm_GetBlock(001A39D0) failed ..
 .. null RBI: 8C00DDA0 -- unlinked stale block
subc <REG_M>,<REG_N>
DIV32S matched 1% @ 0x8C00CF78
DIV32S matched 100% @ 0x8C00CF7E
div32s 1/0/3
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at 8C00FFFE
Invalid GD-DMA start, SB_GDEN=0.Ingoring it.
Sh4: i-cache invalidation 8C09E6A6
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at 8C09E6A6
bm_GetBlock(0019E240) failed ..
Stale block ..bm_GetBlock(0019E240) failed ..
 .. null RBI: 8C09E6CE -- unlinked stale block
Sh4: i-cache invalidation AC09D990
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at AC09D990
VREG = 03 ARMRST 00
subc <REG_M>,<REG_N>
DIV32S matched 1% @ 0x8C091086
DIV32S matched 100% @ 0x8C09108C
div32s 1/0/3
movt <REG_N>
DIV32S matched 1% @ 0x8C0911E4
DIV32S matched 100% @ 0x8C0911EC
div32s 1/0/3
movt <REG_N>
DIV32S matched 1% @ 0x8C09126E
shar <REG_N>
DIV32S matched 1% @ 0x8C091278
VREG = 03 ARMRST 01
VREG = 03 ARMRST 01
VREG = 03 ARMRST 00
subc <REG_M>,<REG_N>
DIV32S matched 1% @ 0x8C0294A6
DIV32S matched 100% @ 0x8C0294AC
div32s 1/0/3
movt <REG_N>
DIV32S matched 1% @ 0x8C029604
DIV32S matched 100% @ 0x8C02960C
div32s 1/0/3
movt <REG_N>
DIV32S matched 1% @ 0x8C02968E
shar <REG_N>
DIV32S matched 1% @ 0x8C029698
Sh4: i-cache invalidation AC09EC6E
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at AC09EC6E
Sh4: i-cache invalidation 8C00DD78
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at 8C00DD78
bm_GetBlock(001A3620) failed ..
Stale block ..bm_GetBlock(001A3620) failed ..
 .. null RBI: 8C00DDA0 -- unlinked stale block
subc <REG_M>,<REG_N>
DIV32S matched 1% @ 0x8C00CF78
DIV32S matched 100% @ 0x8C00CF7E
div32s 1/0/3
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at 8C00FFFE
Invalid GD-DMA start, SB_GDEN=0.Ingoring it.
Sh4: i-cache invalidation 8C09E6A6
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at 8C09E6A6
bm_GetBlock(0019E1A8) failed ..
Stale block ..bm_GetBlock(0019E1A8) failed ..
 .. null RBI: 8C09E6CE -- unlinked stale block
Sh4: i-cache invalidation AC09D990
@@    ngen_ResetBlocks()
Freeing fpcb
recSh4:Dynarec Cache clear at AC09D990
VREG = 03 ARMRST 00
subc <REG_M>,<REG_N>
DIV32S matched 1% @ 0x8C091086
DIV32S matched 100% @ 0x8C09108C
div32s 1/0/3
movt <REG_N>
DIV32S matched 1% @ 0x8C0911E4
DIV32S matched 100% @ 0x8C0911EC
div32s 1/0/3
movt <REG_N>
DIV32S matched 1% @ 0x8C09126E
shar <REG_N>
DIV32S matched 1% @ 0x8C091278
VREG = 03 ARMRST 01
VREG = 03 ARMRST 01
VREG = 03 ARMRST 00
subc <REG_M>,<REG_N>
DIV32S matched 1% @ 0x8C0294A6
DIV32S matched 100% @ 0x8C0294AC
div32s 1/0/3
Texture cache cleared
Fatal error : death by escape key
 in HandleEvents -> ../../newdc/sdl/main.cpp : 328

SIGSEGV @ fault_handler+0x0083E6DC ... 00000000 -> was not in vram
Fatal error : segfault
 in fault_handler -> ../../newdc/linux/common.cpp : 66

./runscript.sh: line 104:  2083 Segmentation fault      ./reicast.elf -config config:image="$CDFILE"
[sUCCESS]--- Starting the application ( runscript.sh  ) ----------
[ START ]--- Restoring the frame buffer status ----------
[sUCCESS]--- Restoring the frame buffer status ----------
[ START ]--- uMount the PND ----------
[ START ]--- Waiting the Union to be available ----------
[sUCCESS]--- Waiting the Union to be available ----------
auplink:plink.c:223: AUFS_CTL_PLINK_MAINT: Inappropriate ioctl for device
rmdir: failed to remove `/mnt/utmp/reicast': Device or resource busy
[ START ]--- Waiting the PND mount dir to be free ----------
[sUCCESS]--- Waiting the PND mount dir to be free ----------
cleanup done
[sUCCESS]--- uMount the PND ----------
=======================================================================================
Return code is : 17
 
@Zero3K: I don't see anything out of the ordinary in the log. Try setting a date in 1998-2002 range to see if it works?
 
Last edited by a moderator:
Got Bomberman Online running on a IS bios. Very slow with lots of graphical glitches. Metropolis Street Racer is quote playable but no sound in game
 
Back
Top