News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - pianohombre

Pages: [1]
Programming / Hacking the Linux Kernel?
« on: September 24, 2018, 02:34:04 pm »
How to get the Linux Kernel more powerful?
Which programming language do you think Linux should be programmed in?

ROM Hacking Discussion / Determining what a segment of code does?
« on: May 26, 2018, 10:08:36 pm »
Basically, I'm working on an editor. It supports more than one game. It has been completely done for 3 games and partially done for 1 game. I'm trying to determine how to find some unknown values for the partially done game so that it will work better. I know the editor works for this game (i.e. the layout is showing up correctly so that means it gets decompression correctly). I was thinking of running a trace-route for the completed game on a few known values, but here's my problem:

in hex and assembly it all looks like gibberish to me, just a hodge-podge of numbers and letters. Yes, I have a chart of assembly definitions so I know, for example, what LDA, STA, JSR means. I just can't determine the significance of unique addresses in a chunk of code. Like, why is this address important? and ok the programmers picked this random address to store the beginning of a pointer table, but how will I find this random address in a game that hasn't been hacked to death?

Programming / Favorite flavor of Linux?
« on: April 02, 2018, 05:44:12 pm »
I remember several flavors of Linux have been popular. Red Hat, Ubuntu, and some others I can't remember. I have Ubuntu installed and it works pretty good, except of course most developers don't have Linux supported apps. Sometimes I have to open the terminal and install programs. It's such a hassle compared to Windows to install programs.

Programming / How were early 8 and 16-bit games programmed?
« on: November 02, 2017, 05:32:58 pm »
Most guides say they were written in Assembly, but C++ has been around since the '70s, and they also had Pascal. There are engines today, such as Unreal Engine, that are used to reduce time to create a game. I really find it hard to believe every game in the 80's and 90's was created by scratch, in ASM, especially since many Nintendo and Capcom games look very similar. Seems like you could upload 100-500kb of graphics and some program would store it all correctly, and the programmer would just need to write things like which direction the graphic fired, or what graphics to display when he died, upgraded armor.

I don't really think it happened that in the early planning stages they said ok let's spend 100 hours compressing graphics and then getting them to display properly when the character changes X or Y position. Of course disassembling graphics is 10x harder than working with the same software, but game companies won't release the actual code, because it's copyrighted, not even if the games get put in the public domain in 10-20 years! (I don't expect them to).

However, I got in this stuff late. I never even studied game programming in college either. I was on a different track (you know working with databases, how to use PHP to create an online social media site or store). It seems like maybe some of the folks on this site may have actually worked on games that were popular in the 80's and 90's, and were familiar with the software used to make some of the games. Please drop a few names (of popular software programs)?? Thanks.

Gaming Discussion / 3DS Samus Returns and AM2R
« on: September 18, 2017, 03:22:50 pm »
Alas, Samus returns. I was going to post on another thread but no comments for 60 days  :banghead:

Looks like it's even pretty close to AM2R, so if you don't own a 3DS, you could try searching google for a copy, since Nintendo sent a Cease and Desist letter and most official releases have been removed.

What I don't get about these stand-alone games, created by Game Maker or what-not, is why re-create an entire engine, and everything from the ground up? They already had Super Metroid, and there's a program to hack the game, plus Metroid Fusion, and Metroid Zero Mission for GBA. Seems like it would be a lot easier to just hack those games than start all over from the beginning. Not sure how flexible Game Maker is, but the AM2R project took a team of people ten years to create. I feel like if they just hacked a game it could have been done in 5 years or less.

I get that some games are in development for 10 years or more, but they eventually release those on the market. For the fan games many times they still release them for free, even after years of work!!

Gaming Discussion / Zelda Maker
« on: August 30, 2017, 08:14:14 pm »

For anyone that doesn't know there's a project in the works, that is basically a GoFundMe/Kickstarter/Patreon to get classic 8-16 bit Zelda worlds made, submitted online, like the popular mascots for Nintendo, Sega, Sony, and Capcom have been doing lately.

The only difference is that Nintendo Japan has taken legal action against the lead programmer for this project, and the programmer has had to change the graphics from typical enemies and characters to clones to avoid copyright infringement and intellectual property lawsuits. It looks like it's near to be released soon. Probably within the next 3-6 months there will be a demo available for supporters.

Programming / Self-deprecating binary joke
« on: August 17, 2017, 05:40:38 am »
Me: Please rate my looks on a scale of 1-10
Her: You're a 1
Me: ha ha. I get you recognized I'm a computer programmer and are probably suggesting that we should use a scale of 0-1, like binary!
Her: No
Me: So technically I'm a 1/1 or the same value as 10/10. You could also have said 1010, which would have been like saying I'm two 10's!!
Her: That's not what I meant

Ever notice how sometimes there's a lesser known game for a system, and the few people who did play it REALLY enjoyed it, and talking about it, and completely exaggerate how great the game is? I don't know how they find these games whether it was a small ad in some magazine somewhere, or a review nowadays for a "gem" on an older system. It probably won't make most top-10 games list for a certain system, but they insist it was the best game ever created.

Yet, even looking at the genre it really seems similar to a lot of the other stuff released, so it's no surprise it came in as maybe 4th or 5th place for the genre in sales. Sometimes the game was lucky to even be published in English or at all, but the fans are demanding 10 new games for portable, the newer systems. These companies are barely above water, yet they want them to pump out a bunch of new games meaning they have to hire all these programmers and meet deadlines. Yet, even if the game was good or alright, there isn't much incentive for the company to go all out, since it wasn't too popular.

If it didn't sell a million copies like the #1 and #2 or even #3 games that everybody is familiar with, then they are going to get crushed by competition. So the fanboys root for the underdogs, all the while watching as each project gets canceled for lack of funding and budget. It's no surprise, yet they get upset. I really wonder why they put in all this effort when there's so many other games like them already.

Programming / Fewer Excuses for making Text-only Programs
« on: June 02, 2017, 03:50:16 pm »
It's so easy to make a GUI program, and most computer classes cover the basics of it in courses in college. There really should be no excuse for people to just write a program, getting it to work, then running it in the command prompt. It's only a few extra steps to make a functioning GUI there really should be no excuse for people to just leave it command-only. There's a lot of programs on here that are like 50kb or less, that are just these bare bones DOS programs. There's Visual Studio, Eclipse and many other compilers that let you create a GUI for free!

This has bothered me for awhile, but there's no documentation online for this program despite being considered one of the best ones on the free market.

It's got this neat viewing window so I can see the VRAM, just like in-game and I can use the CGRAM to load the correct palette, but where exactly is this offset location in the actual rom? It says "base tile address" then lists 0x$000 for the bg1-4 and oam. Also, would these be pc addresses or snes addresses?

I wanted to find the correct offset, then decompress the graphics using lunar compress and have it viewable in a program like tile layer pro. Also, does anyone know if lunar compress uses snes addresses or pc addresses?


I enjoy rom hacking, so I don't really feel like the last mistake I did was too cumbersome, and pathetic. I'm not asking for sympathy. I enjoy solving puzzles so that's why this is so appealing to me.

Anyways, I had thought that a rom I was playing was damaged so planned to release a bug fix to patch it. It was a Sega Genesis rom so I was excited to learn about z80 and 68000 assembly since I haven't approached it before. I downloaded Regen debugger, HivePal, and snasm68k assembler. Unfortunately, Exodus couldn't handle roms that use EEPROM saving instead of the more popular SRAM so I ditched that. The problem was that in Mega Man Wily Wars after defeating a boss it would save the weapon I got, but wouldn't shade the boss in the select screen, so it was hard to keep track of how many I beat. There was so many issues with this game- 50hz instead of 60hz, non-US release, it wouldn't save properly because of EEPROM, etc.

Before I go any further I'll explain the real issue. I was playing MM Wily Wars on a ps2 memory card using pgen 1.1 (because the version I had was patched and pgen wasn't detecting my mass port). What I actually thought was a damaged rom was most likely a problem with an old version of pgen. I still haven't tested if pgen 1.5.1 actually fixes the problem. But I have seen that Fusion runs and saves everything properly.

So unknowing this, over the weekend I tried to fix the "bug" that I thought was in the European version, and still surprised that no one else had made a bug release. So I got the Japanese version, the original version, and noticed the bosses were shaded after defeating them. Great! I thought. I won't have to try and just manually change the palettes using assembly. Anyways, if I wanted to copy most of the code I'd have to set a breakpoint somewhere, but I obviously didn't know where in the RAM that the values were stored. So probably doing this incorrectly and the hard way I dumped the ram after beating a boss then compared it to a ram dump not beating any bosses and just evaluated any changes using a program called FlexHex. I figured if everything was exactly the same it shouldn't have too many different bytes. Well, there was quite a few maybe 50-100 blocks of code that were different, most of them probably having something to do with VRAM.

I did eventually find the address locations that controlled the weapons MM obtained, and whether or not to shade the bosses on the boss select screen in-game, and the file select screen (since WW doesn't use the traditional password system). But it was all in vain!! It was most likely caused by the emulator. I probably played all the way through Bombman level 20-30 times trying to get the address location, so tired of that damn level but it's the recommended first level for MM1. Oh well, now that I know the address locations for bosses I can just beat them all by typing a few numbers into Regen, but Game Genie already unlocked the Wily Tower anyways.

Long story short if you don't want to spend 2 or 3 8-hour days scrolling through hex, and guides all over the Internet on how to use Genesis debuggers and how 68k assembly works try doing something the easy way first, then the hard way. If I had just checked the European version of the rom in an emulator before I had the address locations I would have noticed it recorded everything fine to begin with.

Programming / Anyone get a job after rom hacking and hobbying?
« on: May 07, 2017, 04:39:58 am »
I feel like perhaps I understand programming a little better after rom hacking. Never really used C++ or Assembly, or looked at hexadecimal. They should use these examples at the university level. Much more exciting than string manipulation, arrays, linked lists, stacks, and all the boring junk they teach in the classroom. I typically program the front-end or back-end of websites, but a lot of software like Wordpress has pretty much replaced my job. I mean I'm a pro so I can charge the market rate, which can be high, but for many start-ups it's just an extra fee that they don't want to deal with. While most companies liked the idea of having an IT guy around just seems like a lot are running software on 10-year old PC's and making lots of cutbacks. I actually gave my business card to this local DVD rental shop and their computer and system was running DOS lol. You go into Google or Microsoft and you probably can do a hologram interview, but most of these companies, well at least where I live between the desert and a couple lakes, not exactly Silicon Valley, simply aren't fortune 500.

I feel a lot more comfortable at least trying to deal with memory which can be hard to try and imagine. Basically, the hex and assembly show you how to manage memory better. I may end up adding this to my resume.

Programming / Playstation Emulator / Debugger
« on: May 03, 2017, 12:44:59 am »
After minor success hacking away at an snes game I started reading a bunch of threads in psx and n64 rom hacking. Super Mario 64 is a popular rom to hack, although, many projects have been abandoned because of the length of time needed to complete them, and even if they were a good artist they need good programming skills to implement their graphics. If you're a fan of rom hacking check out Super Mario - Last Impact pretty amazing what the hacker was able to do with the rom. He added several new hats and edited the levels a lot.

psX and no$psx are some popular playstation emulator/debuggers. Anyone try to attempt some 32-bit games? I know these things can be a headache and real time consuming, but some that are done right are pretty cool to see how much they could tweak them. Yea with pc games a lot of the modders are able to tweak the games as well, and even more modern ones like Skyrim or GTA5, but there's still a big audience for a lot of the old-school ones. There's like 10 pages for Super Mario World but there's less results for rom hacks past the 90's.

Gaming Discussion / Nintendo Discontinues NES Classic Edition
« on: April 14, 2017, 03:33:09 am »

This seemed like a fun idea. It was a console pre-loaded with 30 Nintendo favorites with a classic nes controller. Although I read some reviews on Amazon people complained about the cord length and that the item is currently listed for $159.99 (it used to be $69.99).

I just recently learned about RetroPie though. Seems like a way better deal. If you get the Raspberry Pi3 and the case it's less than $50 and you get several systems from Gameboy Advance to Sega Genesis to Gamecube  and you can play on your TV. Some people sell pre-installed RetroPies with a couple controllers, case, SD card, raspberry pi for about twice the cost also. Seems like a better deal.

Alright so right now when I need to do ASM edits I basically convert 65816 to hex and then edit the hex data through a hex editor. I've seen a couple programs, notably Asar and Xkas, that are asm utilities. I use currently asmdev to view translated opcodes, but for example I can't really do very much with the program like if I wanted to do BNE jumploc, I wouldn't know how to do that since it's ASCII characters not hex values like I typically use.

For some reason also it uses "projects". Like if I edit a few lines then save it saves the files as *.bin rather than the rom directly so I'm not exactly sure how to use them, or get an emulator to run any changes I've made.

It looks like some people are able to save .asm files then patch the games this way. I really like just using IPS/BPS files to patch a rom for rom hacks rather than using a program I haven't heard of. Also, those programs look like DOS based. Are there any asm programs such as xkas/asar that have a GUI?

One more thing on memory management. So I was working on editing a rom recently where I needed to add several instructions. Before I was lucky I found several NOP instructions in the rom bank and just overwrote those with a subroutine. Unfortunately now for this new bug fix I need some more space and searching through the rom I found a couple NOP instructions but they were very far spread out so I couldn't really work with them. I tried expanding the rom. I was just hoping that adding an extra 500kb would have hundreds of NOPs somewhere, but I think the bank I was using was completely untouched. How do people manage space limitation? I just need to include an if/else statement. It's so difficult working with assembly where you get 3 variables max. So ridiculous. Could you imagine trying to write a C++ program, or a webpage where your boss or teacher was like, "ok need you to create the next Amazon, or program Skyrim but it's going to be hard because you can only use 4 registers. Now begin!"

ROM Hacking Discussion / How to edit WRAM data in the rom?
« on: April 05, 2017, 12:57:49 am »
I've found a couple RAM Maps detailing certain video game properties at start-up. For instance: number of lives to start, character upgrades, etc.

I can edit this data at run-time using BSNES. For example, say I want the character to start with 5 lives instead of 2. At location $7E:1F80 I can easily pause/break the rom change 02 to 05 then run the rom again. And after refreshing the screen it will show 5 lives. However, $7E:1F80 is not viewable in the hex editor since it doesn't understand SNES addresses. So I use Lunar Address to find mirror address $00:2B93 (dma location not exactly 100% sure how this works as of yet). Ok so I load that new address in an assembly editor or hex editor and it reads as follows:

Code: [Select]
80A993: A9 2C LDA #$2C ;load accumulator address location 2c
80A995: AA TAX ;transfer accumulator to x
80A996: 98 TYA ;transfer y to accumulator

So when viewing RAM in bsnes it was easy to temporarily change values, but if I want to permanently have the character start with 5 lives I need to edit the ROM, yet the value reads as A9 instead of the 02 in the video game. Am I doing a mistake switching between SNES and PC addresses, or did I make a mistake somewhere else? I've read a lot of documentation apparently $7E is the WRAM location, but it's supposed to be mirrored in $00.

Pages: [1]