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

Jump to content

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

Group:
Oldbie: Oldbie
Active Posts:
571 (0.16 per day)
Most Active In:
Engineering & Reverse Engineering (72 posts)
Joined:
26-December 05
Profile Views:
4497
Last Active:
User is offline Yesterday, 08:31 PM
Currently:
Offline

My Information

Member Title:
one rude dude
Age:
29 years old
Birthday:
March 27, 1986
Gender:
Male Male

Contact Information

E-mail:
Click here to e-mail me
Website:
Website  http://

Previous Fields

National Flag:
us

Latest Visitors

Topics I've Started

  1. MBR to GPT conversion

    22 November 2013 - 06:12 PM

    The last of my PC parts for my upgrade arrived today, and needless to say I'm super stoked. Everything is up and running, and I could hardly be happier, with the exception of one key issue. I neglected to factor in upgrading from an old BIOS motherboard to one with UEFI. Since my HDD has an MBR partition table, the Windows 7 installer won't let me do anything. If I had any foresight, I would've simply partitioned the drive with GPT when I first installed it, but that's in the past now.

    This is unfortunately the largest HDD I own, at 1TB, and it contains two reasonably filled partitions I really would hate to lose, so I can't simply backup my data and start over from scratch. I'm wondering if there's a reliable method to non-destructively convert my MBR partition table to GPT. I understand there could be complications with doing this to a system disk, but since I'm reinstalling Windows anyway, I don't think it should be an issue.

    Could definitely use some advice here, as I'm somewhat out of my element. This is the first time I've owned anything remotely approaching current gen hardware, and though I managed to cover all my other bases, this one was obscure enough to escape my notice. If what it comes down to is installing a new HDD, then so be it, but I want to avoid this if possible.
  2. Display adapter appears in device manager as "unknown device"

    31 May 2012 - 01:03 PM

    This has been going on for a couple months now, but it wasn't actually causing any problems, and I assumed it was a symptom of the faulty Radeon X1300 Pro AGP I got off eBay. Well, a day or two ago my X1300 Pro decided to stop emitting any video signal whatsoever. I just said "fuck it" and broke out my old Radeon 9600 Pro because I wasn't in any mood to bother troubleshooting that piece of shit again, I've had more trouble with it than it was worth. I went through the whole process of uninstalling the Catalyst drivers (as the ones I had installed were too new for my backup card), running driver cleaner pro, and then restarting and installing the proper drivers for my older card. After booting into Windows the final time, I noticed an unusual amount of color banding on my desktop, which is really weird because Windows is still running in 32-bit color mode. Checked the device manager and found that now my 9600 Pro is grouped under "unknown device". What's more, whereas the X1300 Pro still worked despite being in the wrong place, Windows adamantly refuses to load the driver for my 9600 Pro primary device now! When I check the device properties, all it tells me is "This device cannot start. (Code 10)."

    Posted Image

    You might ask, what happens when I try the secondary device? Well, I don't know, because that's the VGA port and I only have a DVI cable at my disposal right now. Derp.

    I'm thinking either something has gone horribly wrong in the Windows registry or, perhaps more likely, the AGP on this board is going bad. I wouldn't be surprised at the latter, considering its age. For reference, this is a Dell Optiplex GX270. I'm aware of how outdated my hardware is, I can't afford anything new so I'm getting by with what's available.
  3. AT&T really pisses me off

    28 May 2012 - 11:28 AM

    We used to get DSL through SBC at my dad's house, and we were happy with it for years. Never had a single problem until the assholes at AT&T came along and took over. Ever since then the service quality has been in a constant decline, with spontaneous inexplicable downtime and, as I learned just recently, usage limits! Fucking ridiculous that they're more than happy to sell us 6 mb/s downstream but then say 150 GB is the download limit. Unfortunately the house I live in has multiple computers hooked up to the router and pretty much everyone downloads with reckless abandon. Music, torrents, and Youtube all fucking day, plus I have a Steam account with something in the neighborhood of 80 games. I've done my part, stopped most of my torrenting and burned disc backups of my larger Steam games, but I can't do much about the other people in the house. As I type this we're within 5 GB of the ceiling (with 10 days left in this billing period), after which we get charged $10 for each additional 50 GB. Not exactly horrible, but still undesirable, as we're living on an extremely tight budget. Every little bit counts.

    I'd love to switch to a new ISP, frankly AT&T can go suck it for all I care. The service is astoundingly shitty, and once while in live chat with a friend of mine, a customer service rep had the audacity to claim that 150 GB is "really too much!" for anybody to download per month. Bullshit, I say. Sadly there really aren't any other ISPs to choose in town. I've heard good things about Charter, but they aren't offering service around here. What I'd like some advice on is curtailing downloading and uploading on our DSL service without resorting to severely draconian measures, I don't want to have to physically disconnect computers from the network. Obviously nobody in the house will listen to reason, otherwise I think we wouldn't be in this mess, so what choices do I really have? My thought is if I had a real router, not one of these shitty 2Wire Homeportals, I could possibly enforce some sort of bandwidth-limiting measures, but honestly I don't know.
  4. Bug fixes in the S2 Super Sonic palette cycle

    29 August 2008 - 03:20 PM

    Here are a couple of easy fixes for seldom seen bugs in Sonic 2's Super Sonic palette cycle. I came up with these while working on modifications for my own hack. These bug are almost never seen, but if you've spent as much time screwing around with SS code as I have, they really stand out. I'm using Xenowhirl's 2007 disasm for this quick guide.

    The first one isn't really a bug so much as an oversight. The "transformation" part of the cycle doesn't update the underwater palette at all, potentially resulting in strange colors while transforming underwater. This usually isn't a problem, as the average player is past CPZ and ARZ by the time he gets all the chaos emeralds, but if you're changing the level order or adding water to later levels, you'll probably want to fix it. First, we'll have a look at the first two parts of the palcycle code, which deal with the transformation and de-transformation, respectively:
    Syntax Highlighted Code: ASM
    PalCycle_SuperSonic:
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] (Super_Sonic_palette).[color= #00bfff;]w[/color],d0
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] return_2186
    [color= #00bfff;]bmi[/color].[color= #00bfff;]w[/color] loc_21E6
    [color= #00bfff;]subq[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],d0
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] loc_2188
    [color= #00bfff;]subq[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],(Palette_frame_count).[color= #00bfff;]w[/color]
    [color= #00bfff;]bpl[/color].[color= #00bfff;]s[/color] return_2186
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],(Palette_frame_count).[color= #00bfff;]w[/color]
    [color= #00bfff;]lea[/color] (Pal_2246).[color= #00bfff;]l[/color],a0
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] ([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color],d0
    [color= #00bfff;]addq[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color]
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]30[/color][/color],([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color]
    [color= #00bfff;]bcs[/color].[color= #00bfff;]s[/color] +
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]-1[/color],(Super_Sonic_palette).[color= #00bfff;]w[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],(MainCharacter+obj_control).[color= #00bfff;]w[/color]
    + [color= #00bfff;]lea[/color] (Normal_palette[color= #ff0000;]+4[/color]).[color= #00bfff;]w[/color],a1
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] (a0,d0.[color= #00bfff;]w[/color]),(a1)+
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] [color= #ff0000;]4[/color](a0,d0.[color= #00bfff;]w[/color]),(a1)
     
    return_2186:
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ===========================================================================[/color]
     
    loc_2188:
    [color= #00bfff;]subq[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],(Palette_frame_count).[color= #00bfff;]w[/color]
    [color= #00bfff;]bpl[/color].[color= #00bfff;]s[/color] return_2186
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],(Palette_frame_count).[color= #00bfff;]w[/color]
    [color= #00bfff;]lea[/color] (Pal_2246).[color= #00bfff;]l[/color],a0
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] ([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color],d0
    [color= #00bfff;]subq[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color]
    [color= #00bfff;]bcc[/color].[color= #00bfff;]s[/color] loc_21B0
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],(Super_Sonic_palette).[color= #00bfff;]w[/color]
    loc_21B0:
    [color= #00bfff;]lea[/color] (Normal_palette[color= #ff0000;]+4[/color]).[color= #00bfff;]w[/color],a1
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] (a0,d0.[color= #00bfff;]w[/color]),(a1)+
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] [color= #ff0000;]4[/color](a0,d0.[color= #00bfff;]w[/color]),(a1)
    [color= #00bfff;]lea[/color] (Pal_22C6).[color= #00bfff;]l[/color],a0
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;]D[/color],(Current_Zone).[color= #00bfff;]w[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] +
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;]F[/color],(Current_Zone).[color= #00bfff;]w[/color]
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] return_2186
    [color= #00bfff;]lea[/color] (Pal_2346).[color= #00bfff;]l[/color],a0
    + [color= #00bfff;]lea[/color] (Underwater_palette[color= #ff0000;]+4[/color]).[color= #00bfff;]w[/color],a1
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] (a0,d0.[color= #00bfff;]w[/color]),(a1)+
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] [color= #ff0000;]4[/color](a0,d0.[color= #00bfff;]w[/color]),(a1)
    [color= #00bfff;]rts[/color]

    You'll notice the second part, starting at loc_2188, has two zone checks near the end which aren't present in the first part. One line above the first zone check is where the first underwater palette is loaded, Pal_22C6. Copy all the lines from there to before the rts and paste them in their corresponding place in the transformation cycle.
    Syntax Highlighted Code: ASM
    PalCycle_SuperSonic:
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] (Super_Sonic_palette).[color= #00bfff;]w[/color],d0
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] return_2186
    [color= #00bfff;]bmi[/color].[color= #00bfff;]w[/color] loc_21E6
    [color= #00bfff;]subq[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],d0
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] loc_2188
    [color= #00bfff;]subq[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]1[/color],(Palette_frame_count).[color= #00bfff;]w[/color]
    [color= #00bfff;]bpl[/color].[color= #00bfff;]s[/color] return_2186
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]3[/color],(Palette_frame_count).[color= #00bfff;]w[/color]
    [color= #00bfff;]lea[/color] (Pal_2246).[color= #00bfff;]l[/color],a0
    [color= #00bfff;]move[/color].[color= #00bfff;]w[/color] ([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color],d0
    [color= #00bfff;]addq[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]8[/color],([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color]
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]w[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]30[/color][/color],([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color]
    [color= #00bfff;]bcs[/color].[color= #00bfff;]s[/color] +
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]-1[/color],(Super_Sonic_palette).[color= #00bfff;]w[/color]
    [color= #00bfff;]move[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]0[/color],(MainCharacter+obj_control).[color= #00bfff;]w[/color]
    + [color= #00bfff;]lea[/color] (Normal_palette[color= #ff0000;]+4[/color]).[color= #00bfff;]w[/color],a1
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] (a0,d0.[color= #00bfff;]w[/color]),(a1)+
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] [color= #ff0000;]4[/color](a0,d0.[color= #00bfff;]w[/color]),(a1)
    [color= #00bfff;]lea[/color] (Pal_22C6).[color= #00bfff;]l[/color],a0
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;]D[/color],(Current_Zone).[color= #00bfff;]w[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] +
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;]F[/color],(Current_Zone).[color= #00bfff;]w[/color]
    [color= #00bfff;]bne[/color].[color= #00bfff;]s[/color] return_2186
    [color= #00bfff;]lea[/color] (Pal_2346).[color= #00bfff;]l[/color],a0
    + [color= #00bfff;]lea[/color] (Underwater_palette[color= #ff0000;]+4[/color]).[color= #00bfff;]w[/color],a1
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] (a0,d0.[color= #00bfff;]w[/color]),(a1)+
    [color= #00bfff;]move[/color].[color= #00bfff;]l[/color] [color= #ff0000;]4[/color](a0,d0.[color= #00bfff;]w[/color]),(a1)
     
    return_2186:
    [color= #00bfff;]rts[/color]

    The transformation will now look perfect underwater.

    Now on to the next bug. This has to do with transforming, reverting, and then transforming again in the same level. This was another thing that probably wasn't expected. You can't revert at will, so most players would probably only transform once per level. This bug has a simple cause, a particular RAM address is not properly zeroed during the de-transformation cycle, and it manifests itself as Sonic flashing a completely different color the next time he transforms. To fix it, simply change this line:
    Syntax Highlighted Code: ASM
    	[color= #00bfff;]move[/color].[color= #00bfff;]b[/color]	[color= #ff0000;]#[/color][color= #ff0000;]0[/color],([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color]

    to this:
    Syntax Highlighted Code: ASM
    	[color= #00bfff;]move[/color].[color= #00bfff;]w[/color]	[color= #ff0000;]#[/color][color= #ff0000;]0[/color],([color= #ff0000;]$[/color][color= #ff0000;]FFFFF65C[/color]).[color= #00bfff;]w[/color]

    It took me a while to figure that out because it wasn't immediately obvious to me what address F65C was used for. It turns out that it contains the offset used by the cycle code to determine which colors to load. If its value is $0, it loads the first set of colors, if it's $8 it loads the second set (remember, two bytes per palette entry, and S2 Sonic has four blues), and so on. All other instructions dealing with this address use word-length values, so using a byte-length move instruction to zero it is entirely ineffective.

    And that concludes my guide. Assuming I didn't make some tragic mistake, everything should be just peachy after applying the changes documented above.
  5. Fucked something up big time in S2

    25 August 2008 - 08:04 AM

    I don't know what I did, but something has gone horribly wrong with my hack. I've been modifying some art and freeing up VRAM space for my own use, and it has been going pretty well until just now. I edited the art and mappings for the shield in Sonic 2 and suddenly this happened:
    Posted Image

    The big SEGA logo is also corrupted and once I start any level the game freezes on me. That's only in Gens though, interestingly enough there's only minor tile corruption in Kega, as seen in the spindash dust tiles here:
    Posted Image

    Before doing anything with the shield tiles and mappings, everything was fine. I had just run debugens and done a VRAM dump and the game ran just as well as it always had. Does anyone have any thoughts as to what went wrong?

    EDIT: As it turns out, adding "align $20" after the shield tile data in s2.asm fixed everything. I'd still like to know why it happened though, I've edited compressed art before without such dire effects.

Friends

Tets hasn't added any friends yet.