emu-rs / rustual-boy Goto Github PK
View Code? Open in Web Editor NEWRustual Boy - A Virtual Boy emulator.
Home Page: https://rustualboy.com/
License: Apache License 2.0
Rustual Boy - A Virtual Boy emulator.
Home Page: https://rustualboy.com/
License: Apache License 2.0
Can this emulator have the option to play in a Gameboy-like resolution (or view)?
What do I mean by this? This emulator is about the Virtual Boy, right? A handheld console that had anaglyph 3D. My suggestion would be that if you can actually "fuse" the 3D colors (red and cyan) to make it look like you're playing a Gameboy game. This would actually be perfect for the people that don't have anaglyph glasses, like me.
Also, will this emulator come with its own debugger, and perhaps other tools, for hacking games and creating homebrew games?
Is it possible to use rustual-boy with a modern VR headset such as the HTC Vive and experience the 3D effects appropriately?
Using the step command in the debugger will cause a deadlock when it tries to mutex lock the audio driver, because its already being held by the main emulator loop.
Also would you prefer PRs for bugs instead?
impl Envelope {
...
fn write_data_reg(&mut self, value: u8) {
self.reg_data_reload = (value >> 4) as _;
self.reg_data_direction = (value & 0x80) != 0;
self.reg_data_step_interval = (value & 0x07) as _;
The docs say the direction is the 4th bit, so the mask should be 0x08.
rustual-boy/rustual-boy-core/src/v810.rs
Line 113 in 9c6cc4a
It's probably last raw pointer on libretro branch. It might be the cause of deserialization errors.
TL;DR: I'd like to mush USA and Japan columns together.
I come back randomly to see if anything's changed in compatibility and the split between USA and JP makes it hard to scan, especially when a title doesn't exist in a particular country.
Considering they match 100% of the time, I think it'll be easier for newcomers to scan and understand the compatibility. Notes can be added if USA or JP differ.
Worth it?
I made a side by side stereoscopy middleware that renders the left and right frame buffer side by side, so that you can view them with crossed eyes to achieve stereoscopy. This works great, but currently requires you to double the hardcoded width of both the window and the display resolution.
How should this problem be tackled?
I'm been messing with getting vb-rs working in linux. There is something screwy such that the emulated cpu seems to get stuck in a loop and no longer rendering video frames. When its in the state its not possible to get into the debugger since the F12 check will only happen when there are video frames available.
XRGB8888
format, but sometimes retroarch doesn't listen to this call (something we should actually look into and try to debug, as the libretro folks have said this is pretty weird), and other frontends may not support this format at all, so we need to support all possible formats.I noticed this when adding the showcpucache debugger command.
(vb-rs 0xfff40184) > showmem
Unable to parse command: Error(Position(Eof, [104, 111, 119, 109, 101, 109]))
That should have shown memory, but instead threw the above error. Those numbers end up being "howmem". The nom stuff is a bit confusing to me, but I assume whats happening is the tag!("s")
is marking the input as complete even though there are more letters after it.
I've been thinking about what Rustual Boy 1.0 looks like, and I think the following things are what would make a great first proper release:
So, I'd like to track this as an issue to get it out of my head and also get some feedback on other things we could do for this. I think keeping this list as minimal as possible is necessary to keep it reachable, and I also think we're already pretty close!
In order to reach these points, I think some elaboration/tracking would be useful, so here's an attempt to enumerate/explain things in more detail. Note that I'm quite open to discussion about what these steps should look like, so feel free to discuss here and/or on discord, but at least I'd like to just lay something out initially to put a pin on what to discuss:
unsafe
code and pointers to avoid bounds checks. In certain places this is quite sensible (reading ROM after masking the address, for example), but I'd like to actually revert all of these changes and only add them back if performance profiling points to them being a bottleneck. Basically, I want to be a bit more rigorous here than I was before other people were contributing to the emu. :)With all of these, I think we're looking pretty good for a first proper version :)
$ g log
commit ae3e050dead3005e20720dc610e4f73f38f207da
Merge: e4d4a1e 12d1108
Author: ferris <[email protected]>
Date: Mon Feb 6 01:23:07 2017 +0100
Merge pull request #12 from bobtwinkles/command-line
Command line refinement
$ cargo build --release
Finished release [optimized] target(s) in 0.0 secs
$ target/release/rustual-boy-cli wario.vb
zsh: segmentation fault (core dumped) target/release/rustual-boy-cli wario.vb
$ shasum wario.vb
274c328fbd904f20e69172ab826bf8f94ced1bdb wario.vb
A quick git bisect
gave this sha as the first bad one:
4ee4040
Everything before is good, everything after is bad.
so is there a way to reconfigure rustual boy like remapping the puttons/keys or using a controller. also are there more arguments to the exe to full screen the program.
'''
fn sample_clock(&mut self, audio_driver: &mut AudioDriver) {
...
let mut acc_left = 0;
let mut acc_right = 0;
mix_sample(&mut acc_left, &mut acc_right, &self.voice1, self.voice1.output(&self.wave_tables));
mix_sample(&mut acc_left, &mut acc_right, &self.voice2, self.voice2.output(&self.wave_tables));
...
let output_left = ((((acc_left & 0xfff8) << 3) as isize) - 32768) as i16;
let output_right = ((((acc_right & 0xfff8) << 3) as isize) - 32768) as i16;
'''
The assignment of output_left/right looks fishy.
The values in acc_left/right get truncated down to being 16bits wide, then you make it 19bits wide with the shift, subtract 32k (I assume to try and make it signed?), then truncate it down to a i16?
I seem to recall the << 3 being added as a hack to increase the volume. Seems like it would make more sense to do the shift before the 0xfff8 truncation?
I wanna know if the emulator is still active, just to see if all of its games are playable.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.