Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1364476 Posts in 63827 Topics- by 55709 Members - Latest Member: Oliverking754321

August 18, 2019, 06:55:32 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsVO-EM: Virtual game console running in a virtual machine running in my PC
Pages: 1 [2]
Print
Author Topic: VO-EM: Virtual game console running in a virtual machine running in my PC  (Read 2177 times)
voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #20 on: July 08, 2016, 02:20:00 AM »

Updated today! If you can't see the right version number (8.7.0 Alpha), you need to ctrl+f5 your browser.

New features:
-Start/pause/step buttons.
You now need to hit play (|>) after loading an executable. You can pause with ||. When paused, you can step through one cpu cycle at a time with ||>. If you notice the "cycle" count skipping a lot of frames, that's because the "wait" opcode was used. The emulator skips the "wait" cycles to save you clicking a thousand times. PS: You can also step with enter, and can hold enter to step fast.

-N shortcut key in memory viewer (page)
Pressing "n" on the memory viewer will now take you to the current value of PC (ie, the currently-executing memory). The word that's executing is wrapped in <>s, but it's hard to see so I'll make it colourful later.

-poke shortcut clicks
There's always been a "poke" command in the console, with the syntax "poke [address] [byte value]", that lets you write a byte to memory. I've updated this so you can now write many bytes sequentially, which will be written starting from [address]. I've also made it so that if you click a byte in the memory viewer, it will automatically fill out a "poke" command with the address of the byte you clicked.

Bugfixes:
-performing a save halfword (sh) op no longer performs an unwanted shift left arithmetic immediate (slai) op.
-fixed a bug where writing to tile palette data was not causing tiles to be drawn with the new palette until the tile itself was modified in tile data.
Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #21 on: July 12, 2016, 05:22:07 AM »

Updated today! If you can't see the right version number (12.7.22.5 Alpha), you need to ctrl+f5 your browser.

New features:
-Breakpoints
There are now a few commands pertaining to breakpoints in the console debugger. Typing "breakpoints enable" will switch them on. "add_breakpint 80085" will add a breakpoint at memory address 0x80085 (base 16). Whenever the CPU arrives at a breakpoint, execution will be paused as if you'd pressed the pause button. You can remove breakpoints in the same way, eg "remove_breakpoint 80085". "breakpoints list" will show all currently active breakpoints. "breakpoints disable" will once again disable the breakpoints. Loading a different cartridge or DLX file will clear all breakpoints. If I remember correctly.

-Timer
There is now a timer available at 0xFFFFFF08, spanning one word in memory. It ticks up at one tick per cycle, so assuming the emulator isn't lagging, at 72khz. Writing a byte to 0xFFFFFF08 sets an interrupt request channel for timer events (it currently defaults to IRQ channel 0). Writing a word or halfword to the same area sets an interrupt mask, which defaults to 0xFFFF, which is roughly the length of one Mississippi. Basically, whenever the current value of the timer AND'd with the mask is equal to zero, it will fire an interrupt. It will not fire on the first cycle of execution.

The implementation for the timer is currently untested and haphazard, so these usage instructions won't be valid after tomorrow, but the basic operation is set.


Buxfixes:
-Fixed a rare issue where reading bytes from ROM would return zero despite data being there. I seriously doubt this bug would've ever appeared in practice, but just in case!
-Disabled the RESET button for now, not happy with its implementation. Will fix it later.

Wiki:
-I've started a series of tutorials on using the VO-EM and programming assembly in general. You can see an index of them here.
« Last Edit: July 12, 2016, 05:52:33 AM by voidSkipper » Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #22 on: July 13, 2016, 11:17:53 PM »

Updated today! Today's update is only to the tile editor, which doesn't have version numbers. If you've been there before, you should probably ctrl+f5.

The tile editor is a pretty cool little development suite that was originally used just to make tile maps and convert sprites to a format that the VO-EM's GPU can understand. Today, I expanded on its feature set a little.

New features:
-The tile editor can now be used to actually edit (and even create from scratch, if you're masochistic) tiles and palettes. Of course, you can still import spritesheets in png format, but you can now edit them directly with the pencil tool. There is also a colour picker included, which lets you pick new colours for sprites. I intend to add some numerical RGB inputs as well.

Bugfixes:
-The ASM exporter now exports tilemap data in a way that's a little easier to use - the order has been changed so that map length, width and height comes first and then data. The lenghth etc are now embedded with .word rather than .equ, so that they could be loaded by a map loader dynamically at runtime.
-The editor no longer crashes when you try to load a sprite sheet with dimensions that don't divide perfectly by 16. There is a 3px margin for error before it either adds a whole row/column, or deletes a whole row/column.
-The 'flood' tool has been removed for now, as it was causing some issues.

Wiki entries:
-The wiki has been updated to include detailed instructions on the usage of the editor. You can find the instructions here: http://wiki.vo-em.com/index.php?title=Editor
Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
ProgramGamer
Administrator
Level 10
******


The programmer of games


View Profile
« Reply #23 on: July 14, 2016, 02:24:50 PM »

Been reading up on this from the wiki.

A: This is really cool and makes me want to make something for it.

B: Holy shit assembly is basic af and I want to make my own language with a compiler now.

C: Are there plans for sound?
Logged

voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #24 on: July 14, 2016, 03:19:07 PM »

Been reading up on this from the wiki.

A: This is really cool and makes me want to make something for it.

B: Holy shit assembly is basic af and I want to make my own language with a compiler now.

C: Are there plans for sound?

A: Cheers, definitely feel free! I'll be working up some tutorials on the GPU usage shortly.

B: Yeah, I don't know why it's thought of as so difficult. Maybe old-timey programmers perpetuated that belief for job security reasons Wink

That said, DLX assembly is particularly human-readable.

C: I have a few plans for sound but haven't decided which one to go with yet. Sound is probably going to be pretty basic, because we're pushing the limits of my "runs at 60fps on my eeepc" design constraint. That said, the debugger causes a lot of overhead which won't be in the "release" player.
Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
ProgramGamer
Administrator
Level 10
******


The programmer of games


View Profile
« Reply #25 on: July 14, 2016, 04:58:01 PM »

I don't think it's though of as difficult so much as it's perceived as obtuse because of the colossal amount of overhead required to understand what just one command does.

Also what are you talking about with your "runs at 60 fps" you thing only runs at 30 right now lol.
Logged

voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #26 on: July 14, 2016, 06:04:14 PM »

It is definitely tedious to write large programs with it, but I think the readability really just depends on your commenting and organization, just like other languages - hence why it's a good learning tool. You try to teach people to comment hello_world.jar in programming 101 and they're like "...why?".

The GPU only ticks at 30fps, but flashplayer should definitely be ticking at 60.

If it says 30fps on the fps counter below the output window, please let me know your browser and flash player version. 
Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #27 on: July 15, 2016, 12:19:27 AM »

Updated today! It doesn't matter what version number you can see, because I broke the auto-versioner just now  Facepalm

Today's update was mostly to the wiki and again to the editor.

Changelog
Debugger
-some gpu optimisations to open up some headroom. Mainly focused on reduced reducing the overhead of tile redrawing. [

Editor
New features:
-Save sprites button added. Sprites can now be saved to the new ves file format. It is now actually possible to save your entire project and come back to it without disaster striking. You can now select ves as a file format from the drop down menu when loading sprites as well.
Bug fixes:
-headings made more consistent in assembly output.
-importing sprites from png will no longer create a blank sprite at index zero.

Wiki
New articles:
-Debugger - An article explaining the full feature set of the debug player.
-Hello World - A new tutorial walking you through the basics of getting an image onto the screen.
-The editor page has also been updated to reflect the new features.
« Last Edit: July 15, 2016, 12:25:22 AM by voidSkipper » Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #28 on: July 18, 2016, 10:48:55 PM »

Updated today! If you can't see the right version number (19.7.15.40 Alpha), you need to ctrl+f5 your browser.

I made a minor change to the debugger today, and then spent the rest of the day on the wiki.

Changelog

Debugger
Bugfixes:
-Fixed version numbering thinger. Sorta.
-Fixed gamepad interrupt request routine to actually fire. Defaulted it to have IEN set to enabled.

Wiki
-Fixed an egregious error in the PSW page. Hardware interrupt levels are in the second to most significant byte, not the most significant byte.
-Added three new tutorials:
>A3 - Exploring the Assembler
>A4 - Saving & Loading
>A5 - Calling subroutines
-Relegated the "hello world" tutorial to "AX". It will now be the last tutorial in the "A" series. This is based on reader feedback that it was too complicated, too quickly.
Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #29 on: July 19, 2016, 09:00:35 PM »

Updated today! Today's update is only to the wiki.

Wiki
-Added two new tutorials
>A6 - Input & Interrupts
>A7 - Input & Interrupts Pt II

I think that probably someone who has been through every tutorial up to the end of this point would be comfortable enough to attempt the "Hello World" tutorial now, but I'm interested in feedback because it's a bit difficult knowing how hard this stuff is when you've been doing it for so long.
Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
ProgramGamer
Administrator
Level 10
******


The programmer of games


View Profile
« Reply #30 on: August 17, 2016, 04:45:52 AM »

Hey, you should probably post a bit about the format of DLX files, because I'd like to be able to compile directly to a binary file and bypass the whole Assembler thing when I make my compiler for my as of yet unnamed language for this.

Speaking of which, you should probably also post about the command line arguments of your own Assembler to Binary compiler, because I'm sure people would like to be able to specify files for reading and writing without having all the files in the same folder.
Logged

voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #31 on: September 01, 2016, 05:24:08 PM »

Hey, you should probably post a bit about the format of DLX files, because I'd like to be able to compile directly to a binary file and bypass the whole Assembler thing when I make my compiler for my as of yet unnamed language for this.

Speaking of which, you should probably also post about the command line arguments of your own Assembler to Binary compiler, because I'm sure people would like to be able to specify files for reading and writing without having all the files in the same folder.

Ah, you're completely right, I'll write that up today.
Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #32 on: September 01, 2016, 06:48:44 PM »

Updated today! If you can't see the current version (2.9.16,11.26 Alpha), press ctrl+f5!

Okay, sorry about the two month-ish hiatus. I was on summer leave from work, and since this is my killing-time-at-work project, I've only just gotten back to this.

Changelog
Debugger
New features:
>Reworked timer There are now two separate timers. One is a count-up timer which generates interrupts whenever ANDing it with its mask register is equal to zero. The other can be set to any number and will count down, firing an interrupt when it reaches zero. It does not count down when it's set to 0xFFFFFFFF.
>New "Bitmap Overlay" graphical output feature No matter how I looked at it, diving into a sprite-and-tiled-based GPU was too much for the complete beginner. To make the process easier, I've added a fifth layer to the graphical output - a 120x80, 6-bit (+transparency) display that is drawn double-scaled over the other layers. Education-wise, it will be used to ease the beginner into the concepts of computer graphics. Development-wise, it nicely solves the problem of drawing pleasant-looking text without trickery when the minimum sprite size is 16*16, though a custom text renderer will need to be written.

Wiki
-Added a description of the .dlx file format, as requested by ProgramGamer (I'm so sorry I took so long to notice this, I didn't have notifications for the thread enabled) (Also there's a basic description of assembler command line here
-Added a new tutorial: A8 - Introduction to Computer Graphics
-Added a page describing the bitmap overlay device.

Known issues
It seems that while I was away, Adobe took further steps to euthanize the Flash platform, as it seems now my text embedding/font family selections are not working in the browser. This happened without me releasing a new build. The debugger still works great in the standalone player, so if you're also having this issue, please try downloading debugger and using it outside of your browser while I search for a solution.
Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #33 on: September 04, 2016, 11:14:52 PM »

Updated today! If you can't see the current version (5.9.16,15.50 Alpha), press ctrl+f5!

Just a small update today - I've written most of a new tutorial but it's not quite complete, so I'm just posting the changes to the emulator and documentation.

Changelog
Debugger
New features:
-Bitmap overlay device Added two new features to make this device more functional.
>brightness selector
>hardware rectangle drawing tool
-Register poker Added a new console command, "set_register", which allows you to set a register to a supplied hex value while the debugger is running.

Wiki
-Added documentation for the above features. Available here and here, respectively.
Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
voidSkipper
Level 2
**


coder/linguist/slacker


View Profile WWW
« Reply #34 on: September 08, 2016, 10:46:12 PM »

Updated today! Today's update is just to the wiki.

I've added a new tutorial, on drawing graphics with the new Bitmap Overlay device.

>A9 - Drawing to the Screen

This tutorial concludes the "A" series of beginners' tutorials. I'll be moving on to some more complex stuff in the next series.
Logged

- a 32bit, 72khz virtual game console thinger.
{devlog}{site}{wiki} (Updated 9th September)
{Learn assembly} (11 tutorials)
Pages: 1 [2]
Print
Jump to:  

Theme orange-lt created by panic