DrSMS Official Site
About DrSMS
Downloads
Tutorials
SMS Compatibility
GG Compatibility
Screenshots
News Archives
Credits
Links
Home
DrSMS News Archive - February 2003




DrSMS News
I've found a load of bugs in my ADC and SBC routines which I have fixed. But I still getting a lot of corrupted tile data. For instance Paperboy



Seems to run fine but every now and then I get this



So I have another bug (what a surprise). So I'll try and track this one down.



DrSMS News
I put in the input and scolling sub routines over the weekend and played a few levels of sonic, heres a pic



I'm using the GBA's hardware to scroll the background. This works okay but will cause problems in other games that use SMS screen functions that lock the top of the screen or the left of the screen. So I will have to spend some time looking at other ways to achieve the screen scrolling. There are still loads of bugs in the emulation. As you can see from the pic above the code. If you notice the time is 6:37 ( No thats not because i'm crap at sonic ), It should be 0:37. The game ran for the 2 levels then went I got onto a bonus level it crashed. I went through some other games to see what happened. As you can see I got wonder boy to run as well (well sort of). The game logic all screwed and it ove writes all of the sprite tables with 0000 00C0 I have no idea where thats coming from. But Hey its early days.



DrSMS News
Dont you to just hate it, when you think you fix something but you just make things worse. I knew I had a problem with my SUB and CP routines and thought I had fixed it. But I did not fix it properly..DOH!. I've fixed it correctly now. So heres another pic because I know you like them.



Sonic never looked so good. I haven't implemented any input functions yet, I will get that done tonight. I then have to build in the screen scrolling routines. Emulator speed at the moment is great, it absolutely flys!!!!!



DrSMS News
All of the Rotates and shifts have been fixed. I have also implemented sprites. I'm starting to add undocumented opcodes now. Here's another pic (yes I like pictures)




DrSMS News
I've just realised that I'm not setting the partity correctly in my shift and rotate opcodes. I made a quick change to my code to test this and here's the result



I'll have to spend some time making sure the parity flag is set correctly, and then start to implement a few more undocumented instructions. As you can see from the screen above I have not implemented sprites yet, I'll do that next.



DrSMS News
I found a load more CPU bugs. All of my SUB and CP routines where wrongly setting the Carry flag. I had assumed the Z80 worked like the GBA but I was wrong. The map data all gets loaded, heres a pic



But I now have another problem. When Hangon gets to start start screen it starts to run code from a jump table, it runs okay for a bit but then it gets a dodgy jump address. So there must be another CPU bug somewhere.



DrSMS News
I found a few CPU core bugs which I've fixed. I've almost tracked down the map data load problem. I'm sure it is to do with the Interupt routines now.



DrSMS News
Well I fixed the tile data problem, I needed to clear the whole character if the first byte of the character is written. Heres a pic



I also fixed the map writing routine, it now uses the right palette ( either sprite or character ).



This is the startup screen for hangon. As you can see its not right yet. The map writing routine is correct, the data is just never written to the map. So I must have a bug in either the CPU core or in the interupt routine ( Probably the latter ). So I'm tracking that bug down first.



DrSMS News
I've managed to get some character data to load. ( From Hangon ). As you can see it is not perfect, It keeps getting overwritten with crap which I think is down to the huge amount of bugs in the core. I'm spending a few days fixing the core.



DrSMS News
Well I've re-written the OUT and IN routines about a million times, but I think i'm finally getting somewhere. I now have to write some code for Interupts. Hopefully after that I will get to see some actual tile data being loaded, I'll post some screen shots if it ever happens.



DrSMS News
Re-wrote my OUT routine. I'm currently creating functions to convert SMS character data into GBA character data. I'm going to have to assign some space in memory to store the original SMS character data. This will be used when an IN instruction is used to read the contents of the screen. So when the SMS writes a byte to the screen, it will be stored in memory and also converted into GBA character data and stored in video memory.



DrSMS News
I've finally finished adding my new memory paging code, went through and fixed a few typos. I've got a very basic OUT routine at the moment, it just outputs the data straight to the GBA pallet or video memory. I just wanted to make sure that the core is working. So I tested the code on an emulator and the screen went orange, woo hoo!. I checked where data was been written, and it seems to be updating the pallet, character data and map data. So I will write some functions now to convert the SMS data to GBA data.



DrSMS News
I have almost finished implementing my new memory paging code. I just have the DD and ED opcode blocks to do. Should be finished by tonight. Then I might actually start to write some functions to load tile and sprite data. Should be fun.

About DrSMS | Downloads | Tutorials | SMS Compatibility | GG Compatibility | Screenshots | News Archives | Credits | Links | Home