Any Colour You Like

Profile
Purley, United Kingdom
Z80 and C#-related shenanigans - now with added electronics.
606 comments
1 followers
222 entries
Advertisement
benryves
August 02, 2007
Loader Change
I've started rewriting the underlying resource loading code to better handle multiple versions of the game.



To help with this I'm writing a WinForms-based resource browser.

(That's the only real Quake-related change visible in the above screenshot. I've written a cinematic (.cin, used in Quake 2) loa…
1,721 views
benryves
August 01, 2007
Quake 2 and Emulation
The current design of the Quake project is that there are a bunch of classes in the Data namespace that are used to decode Quake's structures in a fairly brain-dead manner. To do anything useful with it you need to build up your own structures suitable for the way you intend on rendering the level.…
2,664 views
benryves
July 31, 2007
QTEST
Quote:Original post by Scet
Looks nice, I could never figure out Quakes lightmaps.
The unofficial Quake specs are a bit confusing on this matter. To get the size of the texture, find the bounding rectangle for the face (using the horizontal and vertical vectors to convert the 3D vertices to 2D in the…
2,544 views
benryves
July 30, 2007
Let There Be Lightmaps
Quote:Original post by Ravuya
Eventually I gave up on my mod (double shotguns).
Heh, you might like the Killer Quake Pack. [grin]

I've added some primitive parsing and have now loaded the string table, instructions, functions and definitions from progs.dat but can't do a lot with them until I work out…
2,163 views
benryves
July 26, 2007
High-Resolution/Luma Textures and Monsters
Quote:Original post by Evil Steve
Yup, I've done soem QuakeC modding before. The progs.dat is basically all the game code, and quake.exe is all the engine code. if you can load progs.dat properly, you should be able to get behaviour exactly like the original Quake.
Progs.dat is responsible for all mo…
2,385 views
benryves
July 25, 2007
Models
Quote:Original post by Evil Steve
Do you intend to parse the progs.dat file (I think that's what it was called) - the QuakeC compiled code? I've no idea what's actually involved in that, however...
I'm not sure either (I haven't looked into it). As the source code for Quake and the QuakeC compiler ha…
2,065 views
benryves
July 24, 2007
Custom Levels and Model Skins
Quote:Original Post by Scet
Do you plan on making anything out of it, or will it just be a bsp viewer?
An XNA Quake implementation the way I intend on working - that is, to start from scratch - is not really worth it (as far as getting the gameplay 100% identical to DOS Quake).

As a learning project, …
1,800 views
benryves
July 19, 2007
XNA Quake
After pratting around with DOOM with MDX, it's logical to move up to Quake with XNA. After all, the levels are "true" 3D, and there's a healthy amount of new textures (including bump and gloss maps) so that it would make creating an advanced engine easier. My problem is always finding resources.

On …
3,511 views
benryves
July 06, 2007
Event-Driven Keyboard Input for XNA
Edit: The following code has a bug in it. Please make sure you use the corrected code!

After a conversation with Thevenin regarding the Game class in XNA not letting you use event-driven keyboard input (useful, for example, for entering text) I rolled out this monstrosity.

/* * * * * * * * * * * * * …
2,678 views
benryves
May 21, 2007
VMusic2 - USB for the 83+
The TI-83+ lacks something the 84+ series has - a USB port.


Enter the VMusic2. This low-cost (GBP25) module offers a USB host controller with a simple serial interface that can be used to read/write FAT-formatted USB mass storage devices. It can also play MP3 files straight from the drive!



This is al…
2,096 views
benryves
April 30, 2007
SonyIR
I take a strange enjoyment in reading format and protocol documentation, and I find it to be one of the most rewarding tasks. Hence the Sega emulator project, the DOOM project, the Vgm2Midi project and so on.



This project is more hardware related - it's an infrared remote control library for the TI-…
1,814 views
benryves
February 13, 2007
TI Emulation, Functions in Brass and Gemini on the Sega Game Gear
This post got me wondering about a TI emulator. I'd rather finish the SMS one first, but so as to provide some pictures for this journal I wrote a T6A04 emulator (to you and me, that's the LCD display driver chip in the TI-82/83 series calculators). In all, it's less than a hundred lines of code.

Th…
1,536 views
benryves
February 01, 2007
Sega Tween
No updates for a while, I'm afraid - things have been pretty hectic.



I packaged up and released the Sega Tween demo I'd been working on. As you can see, I added an SMS and a 3D mode - this works with the SMS 3D glasses. The extra 3D is quite cheap to calculate - shift the rotated X coordinates one w…
2,032 views
benryves
January 15, 2007
Parallel-Port SMS Control Pad
I've been wanting to attach an SMS control pad to my PC (and be able to use it to play games with) for a while, so put in an order from those excellent chaps at Rapid for the parts needed.

The joypad (as I've now learned from disassembly) is very primitive - 6 normally-open switches, each connected …
2,065 views
benryves
January 08, 2007
Sega BASIC


I have returned to the MDI view for this project which makes life easier when it comes to putting in debugging tools. For the moment all there is is a palette and tile viewer, but I hope to add some helpful utilities - and work out a way to tie the new Brass and an emulator together for debugging a…
2,291 views
benryves
January 03, 2007
SG-1000
I've added some support for the SG-1000, Sega's first? home video game console.



The Master System's VDP is a modified TMS9918, and so most Master System games run in its extended 'Mode 4' setting. That was the only video mode, therefore, that I'd emulated in any form.

For some reason, the older compu…
4,756 views
benryves
December 20, 2006
VDP Interrupts


The VDP can generate two different types of CPU interrupt.

The first, and easiest, is the frame interrupt, which is requested when an entire frame has been generated. This is requested, therefore, at a regular 60Hz in NTSC regions and 50Hz in PAL regions - it's a useful timer to synchronise your gam…
2,010 views
benryves
December 18, 2006
Real 3D on classic 2D hardware
My existing implementation of the standard mapper used the values $1FFC..$1FFF in RAM as the paging registers. This is incorrect; from what I can now tell the paging registers are only updated if you write to the $FFFC..$FFFF range, and isn't anything to do with the RAM anyway (the fact that they e…
2,001 views
benryves
December 15, 2006
Turning Japanese


The Z80 CPU uses 16-bit addressing, which limits it to a 64KB address space. As well as fitting the program ROM into this space, we need to fit in the machine's 8KB RAM, limiting us even further.

To get around this limitation, the memory is broken down into a series of windows ("frames"), and you ca…
1,966 views
benryves
December 11, 2006
Kids, just say No to bilinear filtering


The old layout of the emulator was a bit of a mess.

The Z80 emulator needed to sit inside a class of your design that inherited from IHardwareController (and so exposed methods to handle hardware devices) and another that inherited from IMemoryDevice that exposed methods that could be used to read a…
2,089 views
benryves
December 06, 2006
New Z80 emulator


One chap I cannot thank enough is CoBB for all his hard work in the Z80 field.

I've rewritten the Z80 emulation from scratch; this time it uses an expanded switch block (the 'manual' way) to decode instructions. Rather than write every combination of instructions out by hand, the code making up the …
3,600 views
benryves
November 23, 2006
Compatibility increases further...

I've added better memory emulation (that is, handling ROM paging, RAM mirroring and enabling a BIOS or not). I wouldn't dare say "more accurate", as that might indicate that something about it is partially accurate. [smile]

I've isolated one of the biggest problems - and that's programs getting caug…
1,827 views
benryves
November 21, 2006
Screenshots galore
I downloaded a collection of homebrew releases from SMS Power! for testing. Here are the obligatory screenshots.

Sega Master System



Copyright Violation is displayed incorrectly - the text should be on top of the stars, but that VDP feature is as yet unsupported.

Sega Game Gear



Yes, W…
1,910 views
benryves
November 20, 2006
Sega: Enter the Pies
The Z80 core is now a bit more accurate - ZEXALL still reports a lot of glitches, and this is even a specially modified version of ZEXALL that masks out the two undocumented flags.

The VDP (Video Display Processor - the graphics hardware) has been given an overhaul and is now slightly more accurate.…
2,767 views
benryves
November 17, 2006
And now for something completely different
A long time ago I thought I'd try my hand at this emulation malarkey.



The hardware is the Z80-based Sega Master System and Game Gear.

Due to the design, it was a huge, messy, poorly written series of hacks that could just about produce the above result if you didn't breathe too hard.

After finding thi…
1,723 views
benryves
November 06, 2006
Text mode graphics and help file indexing
In light of the TMDC, I thought I'd package up the .NET class for easy text-mode graphics I'd been throwing together.


Click for big


Once initialised, all you need are two things; the Graphics object it provides to handle your drawing, and the Refresh() method to update the console with whatever it is…
1,894 views
benryves
October 30, 2006
Documentation
This is a standalone application I've been sporadically working on which will be bundled with Latenite, but is perfectly usable away from it.







It's a plugin-extendable document browser. You can use it to manage a library of documents and display them in the tabbed browser on the right. It comes with …
1,605 views
benryves
October 25, 2006
It lives..!
Thanks for the support, MrEvil, and thanks for noticing my rather dead tutorials section, linkofazeroth. [smile]

Sadly, I've been horribly busy recently - and so very little progress on any project. However, Brass 2 is starting to come together...


Can you guess which device the code is for?

Well, it'l…
1,434 views
benryves
October 11, 2006
Latenite and Brass 2


Both Latenite and Brass are getting a significant upgrade - and both are being written from scratch.

Both will sport a plugin-based architecture. This is most obvious with Brass - where pretty much everything - be it an assembler plugin or output plugin - can be extended by writing your own custom p…
1,574 views
benryves
October 06, 2006
Internal PS/2 Port
What's that in the bottom left hand corner?



Kerm Martian has added a PS/2 port to his calculator (click the picture for better pictures and the original thread). He has been developing a shell, entitled DoorsCS (click for website) which sports an impressive set of GUI controls - hence the mouse!
1,809 views
Advertisement

Popular Blogs

shawnhar
Generalist
101 Entries
9 Followers
15 Entries
10 Followers
johnhattan
Programmer
1,277 Entries
47 Followers
ApochPiQ
Generalist
628 Entries
44 Followers
dgreen02
Generalist
338 Entries
56 Followers
Advertisement