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

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.

Messages - weissvulf

Pages: [1] 2 3 4
Programming / Re: PS1 (MIPS) random number generation?
« on: February 13, 2015, 02:28:05 pm »
I searched for it and don't think it does. But even if I missed it, the game doesn't use it for its vital processes. Is there a trick to finding common routines in a game other than searching for key parts of their code? 

Programming / Re: Zelda AoL animation and movement code dump?
« on: February 12, 2015, 07:54:35 pm »
Ah, I see. It might not be too hard to get an emulator with a debugger and set a "break" in a location that will trigger once every drawn frame. Start an animation and then trigger the break immediately. Every time the game hits the break and pauses, take a screen shot before continuing. That should let you capture the relative motion and duration for each sprite used during an animation. If your emulator uses the game's actual resolution, you should be able to track the number of pixels moved (left, right, up, down) by comparing to stationary objects. :o

Programming / Re: Zelda AoL animation and movement code dump?
« on: February 12, 2015, 06:41:30 pm »
It's probably not the simple solution that you're hoping for, but on most sprite animations each frame is stored as simple 2D image. If you save each image from the animation (TileMolestor etc), couldn't you reassemble them into an animation in gamemaker studio?

About the NES frame rate, isn't there a difference between frames "sampled per second" and frames "drawn per second". The time it takes for a game to construct a new frame usually depends entirely on the efficiency of the games code. A monitor (or TV) may sample a frame 60 times per second, but it's likely showing many duplicate frames because the game doesn't update that fast. I've seen NES games that lag. Why would they lag if they always draw 60FPS? My guess would be that most game's draw rates are actually closer to 15-25FPS and the 60FPS mentioned is simply the sample rate- most of which are duplicate frames. I don't mean to sidetrack your thread ShadowBlitz; I thought this info might apply to how complex it would be to rebuild sprite animations manually.   :thumbsup:

Programming / Re: PS1 (MIPS) random number generation?
« on: February 12, 2015, 06:13:32 pm »
I did consider using a table like that. A randomly scrambled value table seems like it would feel random ingame and also have the benefit of giving a perfectly balanced return: every 100 calls it would return an even field without any duplication.

But after some testing I decided to go with the posted routine, fixed as STARWIN suggested to use the remainder (mfhi) to generate the final random. After that change, its returns improved overall 'evenness' to about +/-6 after 600 calls. In the logging routine, the results also filled in much more evenly rather than in intermittent spurts favoring one value range.

I chose not to use the root seed idea because it might lead to "save/load spamming" as players hoped to land a hit or get a successful creature fusion. That is discouraged by the posted routine since it always returns the same results even if you relaod.

Programming / Re: PS1 (MIPS) random number generation?
« on: February 12, 2015, 05:11:12 am »
It is quite odd. I kept expecting that odd RNG routine had some purpose somewhere else in the game, but if it does, I haven't found it. It doesn't technically return the 1-100, but all the routines that call it (at least the ones I've looked at) process the returned value down to 1-100 and then compare that against the "odds" value by using a slti +bne op pair. I was just giving the simplified version. ;)

Programming / Re: PS1 (MIPS) random number generation?
« on: February 09, 2015, 06:53:18 pm »
Thank you for the replies everyone. This is for the game Master of Monsters which shipped with a totally broken random generator. After about 20 CPU ops, the RNG's end result simply counts up by two each time it's called. Ingame that results in intermittent stretches of "no luck" and then "perfect luck", which makes the game annoying to play.

The page you linked has a wealth of information, Gemini. I think I'll try the root counter method to generate the seed and see what happens. I had never heard of the PS1's Timer. I was able to find a little info on it (I think) in Sony documents, but if I understand how it works correctly, using it as a source for the seed might cause irregularities if it's already in use by the game?

I'll try using the remainder like you say STARWIN and see what happens. I made a logging routine that tallies the random "rolls" in game. After ~500 calls, the routine I posted (with a starting seed of "1") seems to roll within +/-8 of even. But it still seems to favor various spans of values intermittently.

Thank you all again  :beer:

Programming / PS1 (MIPS) random number generation?
« on: February 08, 2015, 07:02:34 pm »
I'm trying to make a function to generate a random number between 1-100 for a PS1 game. Below is the best I've come up with, but it still seem to return patterned value ranges rather than random.  Does anyone have a better random generator, or advice on fixing this one?

Code: [Select]
lui r2,0x8001  ;Load seed
lw r2,0x7818(r2)  

li r3, 0x41c64e6d   ;Processing for quasi-random generation
mult r2,r3
mflo r2
addiu r2,r2,0x3039

lui r3,0x8001          ;store new seed
sw r2,0x7818(r3) 

srl r2,r2,0x10        ;More processing

andi r2,r2,0x3FFF ;mask limit to 1023
addiu r3,r0, 11       
divu r2,r3             ;divide by 11 for 0-93 max
jr r31
mflo r2

I was not commenting on any specific person, but since you quoted me, I will offer my OPINION on the specific person's remarks. I don't need to watch his let's-play to know his comments are indefensible. There is nothing constructive about his criticism; it is designed to demean and ridicule. Such immature antics may earn views among YouTube's sub-culture of angry young morons, but they are repugnant in any sort of reasonable context.

puzzledude, there are always lots of people with opinions about everything. Strangely, the people who have few skills or accomplishments of their own seem to feel most qualified to tell everyone else "you're doing it wrong".

It's natural to feel crestfallen when someone criticizes something you put a lot of effort into, but you shouldn't worry what loudmouths say. Instead, be true to your own artistic tastes. If you feel your work is worthy, then there are others who agree with you. They are your audience.

If I'm backtracing through instructions, how do I actually know those instructions were executed?

Sometimes it's just guesswork and trial and error. If you're lucky, you'll see something like LB into S1 close above where you're working.

If not, you can usually find the beginning of the current routine by looking backwards until you find a JR op.  The JR most often marks the end of the routine above, and thus the beginning of your current routine. You can put a break there, and trace downward until you see where the 06 comes into play.

If you are tracing down from the beginning of the routine, you want to stay within the current routine so if you should fast-skip through any JAL ops you come to.

if I were to go the "make my own subroutine" route, how could I put my own code into RAM like weiissvulf said? The ROM file doesn't contain the RAM
Pardon my sloppy phrasing. I've been working on the PS1 too long. I just meant "into memory". Anywhere the 64 can execute code should be fine.

How do I know for sure an area in memory is never used?
There may be better ways, but I would look for debugging text. In PS1, you can often find a chunk of this text by actually searching for 'debug' and the area contains messages like
Code: [Select]
Access Denied. : invalid offset value align.....Access Denied. : system busy..
In a pinch you can also overwrite one of the game's system error messages text that isn't likely to ever be displayed.

I advise you to trace back further in the routine to the source of the 0x6 in s1 and edit that.  Chances are the 06 value is stored somewhere in the data as-is (probably in the attack definition) and can be edited before it's loaded into s1.

You could also do exactly what you mention without much difficulty. Just remove some existing op and replace it with a jump to an unused area of RAM. In that area make a small routine to check if s1 = 6. If it does, modify it to the value you want. When all is done, enact the op(s) removed for the jump, and jump back to where you left off.

Of course, that may turn all sleep effects in the game into the new status.

ROM Hacking Discussion / Re: Adding soft-subs on PSX
« on: December 08, 2014, 11:57:14 pm »
Thank you very much. I haven't dug into the PS1's mdec function much in the past, but that gives me a good idea where to start. Hopefully I'll be able to squeeze it into the game.  :woot!:

ROM Hacking Discussion / Adding soft-subs on PSX
« on: December 08, 2014, 01:58:52 am »
I've been working on translating Brigandine for awhile now and I'm ready to start adding soft subtitles to the movies. Can anyone point me toward some info or asm code to pull it off? Any help is appreciated.  :cookie:

Isn't that the truth.

I suppose my quandary is because I first encountered the title as his unit class designation in the menus. I looked at that as coming from an "omniscient narrator" and therefore thought it would be honest and describe him in a negative light. Now that he is introducing himself with the title, I have to rethink my earlier sentiment.

Thank you both. Hearing other thoughts really helps  :woot!:

I like that, and it fits pretty with his final speech where he states his motivation. :thumbsup:

ROM Hacking Discussion / Re: Help - game code printing to a new line.
« on: August 08, 2014, 12:56:36 pm »
I ran into a similar thing on the Playstation game I'm working on and it was an auto-next-line function built into the text routine. The routine raised a counter by 1 every time a character was printed on screen and then compared the count to a fixed max-characters value.  If the two matched, it ran a 'next line' routine and reset the count to 0.

If it's something like this, you might be able to simply search for the max-character value in the data and increase it.

Script Help and Language Discussion / Opinions on 求めつづける者
« on: August 08, 2014, 12:38:30 pm »
This is the main baddie's title for the game Brigandine. It's used for his unit class and it's also how he introduces himself. I would normally translate it as "Eternal Seeker", but that almost has a positive spin in English.  I think the connotation may be more like "Schemer" but it doesn't seem right to have him introduce himself with a derogatory title. I believe it was translated as "Claimer" in the official release.

Here is one such line where he introduces himself using the title:

Anyone have an idea for a good render for this? Any ideas are welcome :)

Personal Projects / Re: Moorhuhn 2 (PS1) translation
« on: July 06, 2014, 09:53:14 pm »
That worked! A huge thanks RetroHelix  :woot!:
Turns out the phrase fragments were just used in lieu of linebreaks, but the sentences written reversed in the data. ("the hill."  "walked up" "The dog").

Linked to an updated patch in the top post.

Personal Projects / Re: Moorhuhn 2 (PS1) translation
« on: July 06, 2014, 03:24:23 pm »
Thank you for that information RetoHelix. I tried the directions, but it doesn't seem to register a lightgun that Moorhuhn will accept.  I've also tried the built in lightgun emulation with epsxe and pSX; they both seem to register the gun's crosshairs, but the fire buttons don't work, and "calibrate lightgun" remains greyed out. I'm wondering if EU games require a specific type of lightgun.   

Personal Projects / Moorhuhn 2 (PS1) translation
« on: July 06, 2014, 04:56:28 am »

This is just a little diversion project I'm doing for the fun of it. Moorhun 2 is a shooting game something like Duck Hunt. The project is mostly done, but I haven't been able to access the text for calibrating the lightgun ingame.  The text for that section appears to be assembled on the fly from disconnected phrases so I can't really get an idea of the context without seeing it.

Just posting to get any feedback before I call it good. If anyone can access the gun calibration text and take some screenshots, or tell me which PS1 Emulator supports an virtual lightgun that works with the game, I would be grateful.

Here's the PPF Patch (Updated to v1.1)

Pages: [1] 2 3 4