PDA

View Full Version : esotericemu - Java Dreamcast Emulator for WIndows



wraggster
August 15th, 2008, 14:59
News via DCIberia

Rui Caridade (http://www.javagaming.org/index.php/topic,18026.0.html) is working on the first Java Dreamcast Emulator for WIndows.

http://farm4.static.flickr.com/3286/2756074577_e75357375b_m.jpg

http://farm3.static.flickr.com/2278/2181653151_4a1c0b23b9_m.jpg

Heres his explanation;


Hello.
I'm working on a SH-4 processor implementation in Java (same as on the Dreamcast console) as a subject for my thesis..it is not very advanced yet, but it already shows something. About the speed, everything is slooow (at least on my athlon xp) but speed hasn't been a concern yet..

http://www.flickr.com/photos/29443198@N00/2181653151/

This is a demo called 256b.bin for the Sega Dreamcast console (don't quite remember the author now).

For more info

http://code.google.com/p/esotericemu/wiki/Esotericwiki

Bye

Heres more of an explanation of the project:


Hello. My name is Rui Caridade and i'm a student at the University of Evora in Portugal. This project aims to study the implementation of a Sh4 (1) software simulator in the Java programming language and is the basis for my master thesis. The final goal will be to use that simulator in a dreamcast emulator, capable of running complex software like NetBSD or Linux at acceptable speeds.

As shown by other projects

- http://www-jpc.physics.ox.ac.uk/ - http://sourceforge.net/projects/jpsx/
Emulation of complex systems is possible in Java, using dynamic recompilation techniques, having the JVM as the compilation backend. I will study several approaches to how this can be done in Java,present the benefits of each approach, and its performance in several JVM implementations. As such Sh4 to JVM assembler is the main focus of my thesis, and will be the area which will receive the most work. The aim of this project is not to create a full working dreamcast emulator in Java (2), but to use the dreamcast's environment as a testing ground for my implementation of a Sh4 simulator.

(1) - The Sh4 is a 32 bit RISC cpu developed by Renesas( result of Hitachi and Mitsubishi semiconductor groups merging) used in several embedded systems besides the dreamcast. The dreamcast environment was chosen as there is more documentation for it (KallitiOS) and is a system i am familiarised with.
(2) - The PowerVR graphics chip present on the dreamcast is a rather complex piece of hardware and a complete implementation of it falls out of the scope of this project, at least till i present my thesis to evaluation.For other projects which aim to fully emulate the Sega Dreamcast console, look at the Links section below
Why Java?
I am sure most of you are probably asking why would someone consider Java for such a project? Well the JVM has one of the worlds most advanced just in time compilers, which can very likely take better advantage of the underlying platform than a hand written just in time compiler. An amazing result of this approach was already shown by the projects stated above.So how can this project innovate and have some academic importance? At the time this document is being written the Dreamcast and the Sh4 is the most advanced platform which has been attempted to emulate on a java environment.Moreover, it will study several dynamic recompilation approaches which can target different systems, and hopefully will be used in projects which dynamic recompilation is a must have feature.

Details
There is no source available at this time as i'm trying to have a more or less working prototype, without dynamic recompilation, before i upload the source.Also there will not be a source release with the dynamic recompilation engine before i present my thesis for reasons i believe can be easily understandable.However i plan to do be binary releases meanwhile, so more people can test this software, and contribute to a more complete performance analysis.

Current Status
Below is a percentage of what is already done in Esoteric

CPU Modules

Sh4 Cpu Interpreter - 80%. All the opcodes are emulated, but there may be some bugs and the MMU, necessary to run Linux, is not yet implemented. Sh4 Timer Unit - 80%. mostly done Sh4 Interrupt Unit - 60% still trying to figure out to correct implement this one. Sh4 DMAC (DMA Controller) - 10%. Needs alot more work.

The remaining sub systems of the Sh4 processor are not emulated at all.

PowerVR Modules

A framebuffer implementation, using opengl is rather complete, but there are some timing issues to consider.

AICA Modules

At the moment there is no sound chip and ARM emulation. This is not an area i'm really focusing, as it is rather complex and beyond the scope of this project.

Additional Considerations

To be able to access and read cd images(.iso,.bin,.nrg) and cds there is a native library,written in C, which uses libcdio to provide a portable way of accessing those image formats.

Awesome news for the Dreamcast Community :)

porchemasi
August 15th, 2008, 15:42
port to BD-Java? :PPPP only in my dreams :(

Theredbaron
August 15th, 2008, 22:31
Pretty cool stuff

JKKDARK
August 16th, 2008, 00:05
Yeah, more Dreamcast emulators are always welcomed :)

vicious1988
August 16th, 2008, 02:29
Dreamcast, in Java. I'm sorry but doesn't that defeat the goal of an emulator? But I can't really bitch, its his project.

Zack
August 16th, 2008, 16:12
Dreamcast, in Java. I'm sorry but doesn't that defeat the goal of an emulator? But I can't really bitch, its his project.

The goal of an emulator is to emulate/replicate the given target system isn't it?

Other things like speed and such are just bonuses. From a developers point of view at least.

Most emulator authors create an emulator for doing just that, emulating a target system of there choice regardless of speed. Although most emulator developers do optimize there emulators as it progresses, it isn't classed as a "goal" of emulation.

Feel free to correct me if I am wrong, I have been in the emulation scene for 6 years though so I guess I have a pretty good understanding of it.

vicious1988
August 16th, 2008, 16:53
It depends on the dev's perspective I think. Personally if I were developing one from scratch it would be get it in-game on a several discs/isos first (think HL on PCSX2 w/ all the graphical glitches) and then hit decent speed (25-30fps). After that work on both facets about equally until I either get bored or get it to emulate most of the games at their near max speed.

EddieGregg
November 12th, 2008, 09:59
It depends on the dev's perspective I think. Personally if I were developing one from scratch it would be get it in-game on a several discs/isos first (think HL on PCSX2 w/ all the graphical glitches) and then hit decent speed (25-30fps). After that work on both facets about equally until I either get bored or get it to emulate most of the games at their near max speed.