Sonic and Sega Retro Message Board: SoullessSentinel - Viewing Profile - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help

Group:
Member: Members
Active Posts:
243 (0.07 per day)
Most Active In:
Engineering & Reverse Engineering (54 posts)
Joined:
01-October 05
Profile Views:
5173
Last Active:
User is offline Yesterday, 04:09 PM
Currently:
Offline

My Information

Age:
24 years old
Birthday:
March 28, 1991
Gender:
Male Male
Location:
Grimsby, England

Previous Fields

Project:
Sonic 1 32X Remix
National Flag:
uk
SA2 Emblems:
1

Latest Visitors

Topics I've Started

  1. How to convert Sonic 1 Level Select to ASCII

    14 July 2013 - 12:54 PM

    While working with Sonic 1, I got tired of having to edit the level select text in a Hex editor, when it's contents is just plain text in a non-standard encoding, I decided enough was enough, and set out to convert Sonic 1's level select to use standard ASCII text encoding. After a very small amount of work, I decided to compile it into a guide.

    I am aware that many seasoned hackers will have no use for this, as it is an extremely simple edit, but I think it will help some newbie hackers.

    This guide is for the SVN disassembly of Sonic 1. It should be VERY easy to port to other disassemblies as the code changes make no use of macros or equates.

    First, download this file (menutext.bin) and replace the existing file in the "artunc" folder. This is the Sonic 2's menu font uncompressed to work in Sonic 1. It's what I use in my hack, and it's what my code expects.


    Now open Sonic.asm and find the LevelMenuText label and replace this:

    LevelMenuText:	if Revision=0
    		incbin	"misc\Level Select Text.bin"
    		else
    		incbin	"misc\Level Select Text (JP1).bin"
    		endc
    		even
    
    



    With this (Pastebin link)

    As you can see, this is much easier as you can just edit the text directly.

    Now we need to modify Sonic 1 to actually understand this text format, so scroll upwards to LevSel_CharOk: and replace this:
    	LevSel_CharOk:
    
    					add.w	d3,d0		; combine char with VRAM setting
    					move.w	d0,(a6)		; send to VRAM
    					dbf		d2,LevSel_LineLoop
    					rts	
    
    


    With this
    
    	LevSel_CharOk:
                        cmp.w	#$40, d0	; Check for $40 (End of ASCII number area)
    					blt.s		@notText	; If this is not an ASCII text character, branch
    					sub.w	#$3,d0		; Subtract an extra 3 (Compensate for missing characters in the font)
    	@notText:
    					sub.w	#$30,d0		; Subtract #$33 (Convert to S2 font from ASCII)
    					add.w	d3,d0		; combine char with VRAM setting
    					move.w	d0,(a6)		; send to VRAM
    					dbf		d2,LevSel_LineLoop
    					rts	
    
    


    Now to fix the Sound Test numbers, find LevSel_ChgSnd and change this line:
    addi.b		#7,d0		; use alpha characters
    

    To this:
    addi.b		#4,d0		; use alpha characters
    



    There is one more problem, the Sonic 2 font requires a different colour palette than Sonic 1 uses, so take this file, and place it in the palette folder, overwriting the existing one.

    And you are done, build your rom and enjoy the easy to edit text.

    EDIT: Gah, forgot to include the new palette.
    EDIT2: Pastebin link for the level select text, as the forum keeps fucking up the spacing.
  2. Best operating system for my laptop

    30 June 2013 - 03:43 AM

    My main laptop is pretty poor. It's not overly old (2007) but it's basic hardware specifications are as follows:

    Celeron M 530 at 1.73Ghz
    2GB RAM
    Sis Mirage 3 graphics.
    Internal 20 GB hard drive (But that's not an issue, it's OS only, all data is on a 1TB external USB hard drive)
    It's original hard drive failed so I pulled a 20 GB from an old laptop with a fried motherboard.


    It's got a 'designed for Windows Vista Basic' sticker, but I am currently running Windows XP.
    I'd prefer either Windows 7 (Hard drive space issue, so that's out) or Linux... However, it's graphics chipset seems to have support so poor that I can only run in VGA/VESA resolutions with no hardware acceleration.

    I guess I'm just asking for suggestions to make it more usable, really. I have a more powerful desktop, but I like to use this laptop for web browsing and some programming on the move, so anything to make it better to work with would be amazing.
  3. Playing XBLA titles developed with XNA on a PC

    11 January 2013 - 04:44 PM

    I have found a way to run Xbox 360 games on a standard PC, but it can only run titles developed in XNA Game Studio. (Still useful, as some XNA Titles lack Windows versions), for those interested in the details, read on.

    After enjoying playing Fez on a friends Xbox 360 console, I knew it was something I would like to play myself, however, I currently lack an Xbox 360 console (It was sold to provide funds towards getting a Wii U).
    After some digging around online I discovered that Fez was developed using the XNA Framework. Knowing that XNA runs on .NET, I acquired an XBLA package of the game, and extracted it.

    This revealed a number of .XEX files with file names such as Game.exe.xex, FezEngine.dll.xex, and a Runtime folder, containing System.dll.xex, Microsoft.XNA.Framework.xex, among others. This confirmed my belief that this title used XNA and the .NET Framework. With this information, I used xextool to decrypt the .xex files, and load them in a hex editor. The part of the file was a dummy PE header, followed by nothing but zeroes, but I found that at offset 0x30000 in every single one of these files, were .NET assemblies.

    I wrote a quick tool to trim the dummy data from the start of the file, double clicked the resulting Game.exe, and was given a RunTimeException from the .NET runtime, meaning that at least some code was being executed from it.

    After patching the resulting libraries in .NET Reflector to remove code signing from the references, I managed to get it to run. After replacing the xbox System.dll with the Windows version, it ran, crashing shortly after due to missing library files named STORAGE, D3D and XINPUT, among others. I began working on implementing these functions, and managed to get Fez to execute further. After adding in some logic to convert D3DFORMAT parameters between what XNA expects, and what Direct3D uses, it executed far enough to create a Direct3D device handle, so I believe I this method will be successful, and I began work on an 'Emulator' to handle this patching automatically, and use my implementations of the missing run time libraries.

    I'm not certain on this, but if XNA Game Studio uses the same system libraries as standard games (It accessed them via DLLIMPORT, rather than as .NET assembly references), my implementations of the APIs may be useful in the future for emulators that include emulation of the Xbox 360's processor to aid running native games.

    TLDR:
    I can run XNA developed XBLA titles, but they currently crash due to unimplemented functions, but I'm working on it.
    I've created a google code project here, and will be uploading my code so far under the BSD licence in a few days time.

    I'm posting here to enquire what people here think of this idea, as I know there are many technically minded people around that could provide their insight into this, and to possibly find testers in the near future.
  4. 3D Model formats

    12 January 2012 - 10:20 AM

    I'll keep this short. I'm working on a 3D game engine for some projects of mine, and it is completely platform independant by design (Currently running on PSP and Windows, but should work on Linux too)

    Three days into development, and I have just finished implementing a Wavefront OBJ Loader that supports most of it's useful features for games, however I'm sure many of you are aware, the OBJ format doesn't support bones or any other animation methods, so is only useful for static meshes.

    So here's my question: What 3D model formats would you recommend that support Skeletal animation while being easy to parse and lightweight enough to not limit the platforms this engine can be ported to?
  5. Mega CD Template

    30 September 2011 - 05:28 PM

    A long time ago, I began working on the basic structure ready for me to begin to develop for the Mega CD. I posted it over at SpritesMind, within another topic, I haven't worked on it since, so I feel I might as well release it here too.

    Quote of post from Spritesmind:

    Quote

    Here, is an incomplete template for a Sega/MegaCD game. It currently stands as a bootloader, with programs for the main and sub cpu's.
    It supports parsing the ISO filesystem, for loading files from CD, and executing them, so at this stage is very simple.

    I included the CD Port of Columns, just as a test program for the bootloader. I did comment extensively though, so, I suggest giving it a read through.

    A build script is included, which also calls a custom program to trim the output from MKISOFS and merge the generated filesystem with the boot code, making the compilation seamless.

    Default region is JAP, but, all security sectors are included. You would need to edit IP.ASM to include the correct file for your target region

    http://www.megaupload.com/?d=61UDIN52
    I apologise for Megaupload, I do not have my own host at this point in time.

    Warning: I am NOT an experienced coder, so things could probably be more optimised and be done in a better way, keep that in mind.

    For those of you who dislike MegaUpload, or just want a direct link, Kaneda mirrored it at http://gendev.sprite...e_ProjectCD.zip
    This is very basic, and needs work to be used for a full game, however, if you wish to start developing for the MegaCD, it should at least be a pointer in the right direction. For an example of it's usability in it's current state, it was used successfully in the Mega CD version of Artemio Urbina's 240p Test Suite

Friends

SoullessSentinel hasn't added any friends yet.