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 - insidious611

Pages: 1 2 3 4 [5] 6
101
It's worth noting that in the videos I'm working from almost entirely the OCRemix tracks. My final selection will be a mix, and you can choose to either go with that, go with the OCRemix tracks, go with the OST, or go with the OST supplemented with FinalFanTim's or Sean Schafianski's tracks. Or you can create your own completely custom mix from within the installer. There'll be kind of a table-based interface for choosing which to go with for each track if you choose to do a custom selection.

Also yes, the twitch gameplay video is completely fade-less. I noticed it particularly when the game suddenly switches from a lower volume version of Awakening to the full volume version after you specify Terra's name, but ehh, I guess it's not that obvious to others. :P

102
First, a reply:

theonyxphoenix: That is actually really helpful since you're the third person to say that, which means that that's more than likely a "bug" we can cross off our list. Which means the only bug currently, other than missing fades, is no music on load of a saved game.

Now that my head is a bit less fuzzy, heres some technical details on the hurdles I'm working to overcome. If you don't want to deal with overly technical stuff, skip to the numbered "workarounds" at the bottom for an idea of the choices we have that *aren't* dangerous.

The NMI, or "Non Maskable Interrupt", is generic computing term for an Interrupt (basically a request to the CPU, literally 'interrupting' its current behavior) that must be handled if it's enabled. On the SNES, the NMI, if enabled, happens every VBlank, so once per field or roughly 60 times per second.

For the most part up until now I've been hooking the routines from the game itself, that is, taking requests the game makes to its own code and rerouting it to mine. For the fading, and for some later things I'm going to have to re: timing (the Opera scene and Dancing Mad during the final battle, among other things), I am now hooking into the game's NMI routine, which means I can run code every frame. I'm using stack manipulation to make sure that I don't harm the game's own NMI handling in the process.

Now, the fading itself is pretty simple. Reduce or increase the volume of the MSU every frame until we've gotten to our desired volume (or close to, since I'm reducing by 5s). The problem comes when fading from one track to another. Currently, we're hooking the game's "new track" routine and immediately switching to an MSU track and playing it, falling back to the game's own SPC routines if a track is missing or unplayable. This allows us to handle looping sound effects like wind and train sounds that are implemented as "songs" in the game but which we don't want to have to do on the MSU. To do the fading, however, we need to, when we're told to switch to a new track, store the requested track and a variable telling my NMI routine that we're fading out and into a new track in RAM, since this needs to be handled over time.

However, this means that the NMI routine, the one that runs every second, needs to handle the actual switching of tracks. Which is a problem for two reasons. One, you need to loop after loading a track and wait for it to be loaded and ready to play before you can play it. This is done because Byuu wanted to make it possible for the MSU-1 to be implemented in cheap, slow flash memory or even as a CD. This loading loop takes less than a second in higan, but we can't assume it will take any specific amount of time. And the NMI only lasts a tiny fraction of a second itself. If I'm still in NMI code when the NMI ends, massive graphical corruption can result, so anything I do during it needs to be only a few instructions long.

We can work around this problem by using the "60 times a second" nature of the NMI. We can set the track to load, set some variable to tell my NMI routine we're waiting for a track to load, and check if it's loaded every frame. On Higan, this might actually be marginally slower than just looping to wait for the track since I'm not sure it even takes 1/60th of a second to load a track, at least on my machine, but it should be fast enough. Then, we would play the track once the MSU states that it's loaded, or, deal with it if it's a bad track.

Which leads to my second problem. Currently, if we detect a "bad track" (one that's missing, in the case of the wind or train scenes, intentionally), we handle it very cleanly: Since we're already in the game's native music loading routine when we're switching tracks, we just return to the routine we were called from without muting the SPC.

However, if we're doing the switching and playing during the NMI, we don't have a routine to return to, so there's no way to fall back to the original SPC routines... Except...

There is a workaround that might work to do this, but it's *extremely* messy and I don't particularly like it:

If we've got a bad track, we can load the correct stuff in the correct RAM spots and registers and "jump" to the original SPC routine, an instruction *after* the point where I hook it into my routine, effectively going into the game's original code to call for a new track in order to deal with our missing track. The problems?

For one, we'd be doing this during an NMI. I'm not sure if the game's SPC code is short enough to be called during an NMI, it's generally called during scene transitions during which the screen is blank and the NMI is disabled (which, we can't very well disable the NMI during the NMI). This could lead to graphical corruption or other bugs.

For another, we'd be at least 2 frames (or 1/30th of a second/0.03 seconds) behind the original call to load the song as far as loading the SPC version, which could throw timing off considerably.



Other workarounds?

Well, there's a few that come to mind at the moment.
1. We can abandon the idea of fading completely, keeping music transitions their current sudden (but working and with simple, easy to debug code) selves.
2. We can do an extremely quick looped fade during our original routine (on the order of less than a frame). This *should* reduce or eliminate popping but won't really sound any less sudden to human ears.
3. We can do a version of the patch that has good fading but that has no fallback routines: Looping sound effects or missing music tracks won't play at all. This is already the case if you're running in BSNES v075 because the "bad track" routine in the MSU-1 was not implemented yet at that point. (which is why I suggest Higan or the SD2SNES when this hack gets released)

103
Hrm.. I'm not sure I'm going to be able to actually fade between tracks... There's two things preventing me from doing it, one of which I might be able to work around but one I know I can't.

The one I might be able to work around is that I need to do anythingthat involves timing during the NMI which is fairly short, and not long enough to wait for a track be loaded and check if it's missing.

The second one, which I can't work around and which is fairly important to keeping things functioning, is that if I'm changing tracks during a time that's not during the SPC loading routine, I can't do the fallback to the normal routine if a track is missing, such as in the case of wind sound effects and other "songs" I don't handle.

So I think we're going to just have to deal with the sudden track changes without fades. :/ That makes me unhappy but I can't really see a way to avoid it atm.

104
Honestly, unless either of those hacks modify the sound routines or a certain, empty portion of ROM I'm using for my own stuff, it's likely they're both compatible. I'll give them a look through though.

I had a graphics card fail on me and that's kind of put a damper on my mood, so I haven't been working too hard on this lately. At the moment what I really need to do is do a comparative runthrough of the game with the mod and without it to see if there are any major issues of music not playing, or the wrong music playing. What I'd counted as a bug, the Narshe music playing until you get to Figaro, someone said might actually be a thing that happens in the original. So it's that kind of thing I need to test for.

Other than that, what I *really* need to do is get fading working so that music transitions aren't so rough, but that requires hooking the NMI so that I can time said transitions, and that's not the easiest thing in the world.

Also, I still really need to figure out how saving and loading works for the music routines, so that I can get it playing the right music on game load.

105
Did a bit of a stream testing the game out earlier.
http://www.twitch.tv/insidious622/b/655660538

Following it, and my dissatisfaction with the fact the music was so loud you couldn't really hear the sound effects in battle, I applied a brute-force scaling of the volume down by 0x40.

This is *still* a bit loud but at least you can hear the sound effects in battle now.

106
I'm probably going to need to put out a call for Alpha testers soon.

However, I need anyone who signs up for this to be aware of a few things vefore doing so.

1. It's an alpha test. In the classic sense, as in shit will be broken and I need you to both understand that and be able to tell me where, when, how, and in what context something broke, providing me with savestates if necessary

2. It's going to be at least a 3 gig download.

3. Nothing is to be released publically until the work is done. I find a subpar leak I strangle you with shielded CAT6

4. I'm going to need you to have a relatively deep familiarity with the game,and specifically any musical cues

107
Today is a good day! We've finished the OCRemix album completely. Well, other than figuring out what to do about the Opera tracks, anyway.

Also, I may have fixed a couple bugs, but I'm not sure yet. Heck, I may have caused a bunch more. We'll see.

108
obesebear: I plan on doing more FF6 improvement after this, but I'm focusing on this for now and am not going to announce my next plan until after this is release-quality. I noticed FF6 getting a lack of love too, and wanted to fix that. :P

109
Current Bugs:

* (Maybe fixed) Playing game music and MSU-1 music together after battle. Hacked around by zeroing the game's internal music playing variables if MSU playing succeeds, that way it doesn't have anywhere to load from. Seems to work. Better fix would be to find out what routine is re-enabling internal music, but I haven't had success with that yet.

* (Not yet fixed, but fix proposed) Silence or looping Prelude (load screen music) on load of saved game. This is likely because  some or all of the internal music variables are being saved on game save and then loaded on game load, and because we've told the internal music routine to mute the music, it's being skipped. The possible fix? Hook the save routines and copy our variables in place of the game's. This *should*, as long as the game is calling the "new track" routine on load, mean we're playing the proper music on load.

I'm not releasing this until we've got three things, roughly in order:

1. Special handling working for at *least* Dancing Mad, we might be able to just work around The Phantom Train but we need to be able to play 3 different loops for the Dancing Mad tiers even though there's only one internal track for it.

2. All of the music for all of the versions looped and trimmed.

3. A full playthrough of the entire game with everything working, on Higan, Bsnes (though on Bsnes SPU fallthrough on missing track won't work) and, if I can find someone with an sd2snes or afford one for myself, sd2snes, with MSU-1 music working for everything *but* the opera. Also, a full playthrough of the game on an emulator that doesn't support MSU, to make sure we aren't breaking things.

The opera is likely going to be left for a second release because it's going to involve *major* hooking of routines and timing issues, so for the first release it's probably going to be left to SPC only.

110
Guess what!

We have liftoff! The game is playing our tracks!

There's a bunch of bugs to fix, but lets celebrate what we have with a video.

https://www.youtube.com/watch?v=vKgSqG2Tbfc

111
Having done some investigations into how FF3's internal music handling works, I had to update a number of the tracks above to reflect new findings.

112
This bit is mostly here to provide notes for myself because I have a nasty habit of losing important info in hard drive crashes:

FF3us Important RAM Map:
$1301: MusSongID
$1302: MusVolume

Important hardware registers:
$2140-$2144: SPC Communications Registers

113
WIP / Re: [In Development] FF8 Voiceover Project
« on: 2015-04-24 08:15:36 »
Oh, I certainly didn't mean to sound impatient, it's more... Stuff like this has been attempted before and then abandoned. :P So I wanted to express my sincere wishes that this be completed.

Glad to see you're already so far along though, that's... extremely impressive.

114
Nezdude's links work for me.

115
So, Covarr and I have been talking about the Opera Sequence, because it's... a mess, in general. Even if we forget the fact that it's musically interactive and rather tightly timed in the original, the OCRemix versions, which I definitely would select because they're *amazing*, concatenate two parts into one in one place, and add or change a bunch of lines.

Not to fear though, I've not given up.

It's likely that the first release will just have the normal SPC sound for this sequence, and that a later release will address these plans, but in any case, the plan is to retime the sequence entirely ourselves for the OCRemix version. The text display will be removed, and the "mouth flaps" will be redone to match the extra lines/words, and the timing fixed. This is going to be a pretty massive undertaking but imo it's necessary. When we get to this point, *ANY* help that *ANYONE* has regarding SNES ASM would be *extremely* welcome.

116
EDIT: Since this progress table was long since out of date it's been removed. All tracks from all the original sources have been looped and tested at this point.


Update! 7/13/15

Due to issues with timing and properly splitting the music, the OCR versions of the Opera tracks have been removed and replaced with another fan remix.These replaced tracks are converted, looped, and tested. These also include replacements for some of the tracks the OCR was missing, such as Grand Finale and iirc What??.

Update! 10/7/17

GitHub user edale2 has been helping normalize the audio, and providing a few more alternate tracks, including some Black Mages covers. Expect these in the next release of the installer.

117
Yeah, but the problem is that it was kind of nerfed hard in the other direction by making it just the number of escapes. Maybe a compromise?

118
I'm headed off to bed, but I've begun the process of creating the .pcm files (which involves rather tedious amounts of trimming, pinpoint exact loop sample checking, and testing.) I have the .pcm files for all 3 versions for track 2 and track 1, though the OCRemix version actually has two options for track 1 (the opening): The native tempo, which is completely out of timing with the actual game past about the 2 minute mark, and uptempoed to almost match the OST.

119
Regarding Big Bang Theory, I have my own reasons for disliking the show. It seems to serve to perpetuate negative stereotypes of intelligent people, and in particular it seems to make fun of certain traits that are common in those with Asperger's Syndrome. I find this sort of... negative stereotype acceptance troubling.

120
So, I was rather inspired by DLPB's soundtrack mods for FF7, and FF8, by this old thread nobody really replied to, by FinalFanTim's remixes, by OCRemix Balanche & Ruin, and by documentation of the MSU-1, to attempt a mod to replace the audio of FF6 with higher fidelity/remixed versions.
So without further ado...
PLEASE NOTE THIS FIRST POST NEEDS UPDATING
What is this?

Dancing Mad is an Open Beta mod to enhance the audio of the SNES game Final Fantasy 6 (3 in the US). Put simply, it replaces the SPC (SNES sound chip) based audio of FF6/FF3 with the official OST, or optionally, a number of other sources of remixed/remastered FF6 music.

Why?

Two reasons, really. For one, I have been feeling lately like I want to give myself challenging projects that involve areas outside of my comfort zone. I've not done much ROM hacking (at least, without tools) before, and my experience with ASM is mostly 6502 and a smattering of x86. So this is new territory, and that's exciting and promising. It's my belief that you should always endeavor to learn new things.

The second is that there are a fairly large number of really good remixes, arrangements, etc of the Final Fantasy VI soundtrack that fit well with the game but sound better than the original SPCs, and I wanted to see these as part of the game itself and give the game a little modern color and flavor.

off course, in terms of the OSV, the difference is admittedly somewhat minor. As far as I can tell, the OSV tracks were essentially rendered *from* the SPCs in a way. The difference in quality is there, mostly coming from slightly cleaner samples, better resampling and a samplerate of 44100Hz instead of 32000Hz, but it's quite hard to notice.

Where can I download it?

THE OPEN BETA IS NOW AVAILABLE HERE
Development occurs on my GitHub, which is here

What Songs?

This mod will contain audio from at least these 6 sources, converted to MSU-1 PCM format.

1. FLACs of the official FF6 OST.
2. MP3s of FinalFanTim's "Unreleased Tracks" FFVI Remaster project.
3. FLACs of the OCRemix Balance & Ruin remix album.
4. FLACs of Sean Schafianski's Final Fantasy VI Remastered project. (Buy it! It's on iTunes and Loudr and it is glorious)
5. MP3s of Final Fantasy Acoustic Rendition
6. MP3s of ChrystalChameleon's FF6 remasters.

You will be able to choose which specific audio files you want to install, or you can choose one of 8 predefined selections:

1. The FF6 OST itself
2. The FinalFanTim MP3s plus the OST
3. The OCRemix Album, plus the OST for Grand Finale?, What?, and Celes.
4. Alternate loops of the OCRemix album provided by qwertymodo
5. The Sean Schafianski Remaster plus the OST
6. The Final Fantasy Acoustic Rendition plus the OST
7. ChrystalChameleon's FF6 remixes plus the OST
8. My own selection of a mix of the four, based on what I feel best captures Nobuo Uematsu's original intent. Entirely subjective here, don't like my selections, don't use them.

In addition, other tracks are included for you to select from that don't fit any of the above. This includes Opera music by the Tokyo Symphony Orchestra (currently disabled due to coding difficulties :( ) as well as music contributed by fans and other contributors to the project.
I may also include some misceallaneous tracks if I find good ones, such as OCRemix tracks that aren't bart of Balance & Ruin, or orchestral/piano tracks, etc.

What will I need?

You'll need a copy of FF3us to start with, I plan on supporting FF6j later. Patched versions should work, unless they touch the audio code or move things around addresswise. (No translations that extend script size!)

As far as playing this, you will need either bsnes/higan (I plan on targetting bsnes v075 as a baseline as people seem to have had the most success with this version as far as MSU-1), or the actual SNES hardware and an SD2SNES flash cart. (I do not by any means have the money to purchase one of these for myself, so I'm going to need people's help testing this.)

How?

This project will use the MSU-1 "addon" developed by Byuu. This addon is much like the SuperFX, S-DD1, or SA-1 chips in released SNES games, except that, other than in the case of the SD2SNES, there is no physical hardware implementation. This addon allows me to stream data, in this case audio, at 2.68Mbit/s from a data file seperate to the ROM itself. This add-on is essentially intended to be everything the SNES CD was supposed to be, and more. Other people have added remastered BGM to other games before (See A Link To The Past for one of the few publically released versions... I have no idea why people are so guarded with their MSU-1 hacks.), and a few have even added FMVs to SNES games. (I may eventually try to port the PSX FMVs, but that would be a seperate, compatible mod.)

I will point out that I admittedly have little to no grasp of SNES ASM beyond basic SPC routines, the MSU-1 documentation, and my knowledge of how ASM works in general. So the patching part of this project is expected to be slow going, initially buggy, and potentially arduous. But, from what I've seen the MSU routines are relatively simple, and I don't plan on giving up, as I would personally love to see FF6 modded with better music.

This project has been completed before by someone by the handle of Drakon (see YouTube) but he refuses to release his IPS file, sources, documentation, or literally anything that would actually allow you to play his efforts, so in the spirit of the Open Source community, I'm going to redo it and release it to everyone.

This project is going to end up being one of two things on the user end. 1. A rather large download or 2. A rather long install, as either I'm going to have to pack in the uncompressed raw PCM files or a script to manually decode and convert them on the fly.

How Can I Help?

Testers, *especially* SD2SNES testers, of the Open Beta are wanted. Specifically, I'd like people to pay special attention to the Opera scenes and make sure those are functioning properly.
In addition, people with experience dealing with SNES assembly, NMI routines, and most helpfully, editing FF6's specific NMI routine without causing issues, are critically needed to help with the fading issue. See the github issue HERE. Please fork and make pull requests!

Current Status?

2015-04-25
We have liftoff! The project is working, we have officially succeeded in getting FF6 to play our songs! See the video section.

2015-09-28
We have a private alpha! Complete with a convenient installer (with dynamic track downloader), readme (with credits), and all the files necessary for playing the game besides the ROM itself (please supply your own unheadered FF3 US V1.0 ROM). See this post for details.

2016-06-03
We have an Open Beta! See links above.

2017-09-17
After a long hiatus, work is proceeding on fixing some issues with the installer, as well as fixing some project organization issues. Work has moved from BitBucket to GitHub.

2019-01-06
Dancing Mad is currently working and mostly feature-complete on Japanese, and US V1.0 and V1.1 ROMs. madsiur is still working on fading code.


This is taking too long! When is it going to be done?

When it's done. Any replies to this effect will be ignored, summarily. I encourage moderators and admins to discourage such talk in general. This is a project I definitely want to do, as an educational project for myself if nothing else, but I have other projects, other obligations in life in general, a fiancee, contract work, StreamStatus, game development, and other things I also work on. So progress may at times be slow, or may halt altogether. Be assured, I'm not going to give up on it.

Progress Videos!

Very Old Alpha
https://www.youtube.com/watch?v=4WHT98HBgpE

First working proof of concept
https://www.youtube.com/watch?v=vKgSqG2Tbfc

121
I haven't seen you on IRC at the same time as me lately, or I'd have poked you about this there since this is very much a minor thing. But I was wondering if it would be possible to have a patch to return Chocobokkle to its Japanese damage calculation (escapes*level, instead of just escapes). This seems like it'd be the sort of thing that would fit in with Reunion, and it just kind of would be a neat change in general, imo.

122
I'm working on mockups for data files for the "genericized" version, in the experimental branch. I have a basic one for FF7 that would produce something similar to (if not exactly like) what the current program outputs. I'm next going to work on one for FF6 (US Version, AKA FF3) running in Higan.

Once I've finished tables for FF6, I think I might add what I learn from it to the wiki.

EDIT: Didn't want to double post. It should be noted that, especially for this kind of purpose, XAMPP is basically "point and shoot" as far as setting up a webserver. If you can install Anxious Heart, you can probably install XAMPP. :P

123
Also, I'd eventually like to create an EXE (or maybe even DLL, loaded in by the updater) version of the image generator that's its own little webserver.
I'd need to find out how to implement GD in C# for this, though, and I'd consider this much further down the road than even genericizing the tool.

If I did do this, it would basically be a matter of "run this tool, then run that tool."

Honestly though, this is a bit of a "poweruser tool" anyway. After all, setting up a stream isn't exactly the easiest thing in the world to begin with, and once this tool becomes genericized, adding more games to it will require a knowledge of memory offsets and a basic idea of how
to layout text based on dynamically generated variables. :P

124
Specifically, I could probably create an image that would work for that given enough data on memory addresses and such, but I would be lost as to how to actually overlay it onto the game, as OBS does that for me as far as streaming goes.

125
FF7 Tools / [PC] "StreamStatus" Streaming Companion.
« on: 2015-04-18 15:42:51 »
Hi everyone. I'm a long time lurker, recently rather suddenly active member of the community. With the help of the people on IRC, in particular and in no particular order, Aali, Covarr, and DLPB, I've created a piece of software that allows you to create an automatically updating overlay to be used when streaming Final Fantasy 7 on various game streaming websites. In the future, I plan to expand this software to other games.

I have been using this to augment and supplement my streamed playthrough of a heavily modded FF7, which is live at various times of the day (usually late afternoon or evening CST, though there have been times where I streamed in the morning as well) here.

The software, in its current FF7 only form is available with full source code here. Or if you want a direct download link without going to the project page, here

If you don't need the source code, feel free to remove the GUISrc folder.

There are a number of requirements in order to make use of this. I will list these below:

Requirements:

1. A PC copy of FF7. This has only been tested with the 1998 version (or, specifically, a 2012 copy converted to the 1998 version, though any 1998 version should work.)

2. A local Apache webserver with PHP. For this, I recommend XAMPP, available here. For your security, especially if you're unfamiliar with running a network server, I recommend setting the server to listen only on 127.0.0.1, making it accessible only to your local computer and not to the rest of the network or the internet. This is especially important if you're using a laptop and plan on travelling with it.

3. The latest .NET Framework. The GUI portion of this program was coded using the latest version of Visual Basic .NET, so an up to date framework is a must.

4. Streaming software capable of using a web page as a source. I use Open Broadcaster Software with the CLR Browser Plugin

5. Patience. This takes a bit to set up, and your mileage may, can, and will vary.


Here are a couple sample videos of the overlay in action:

Basic Demonstration Video! Watch the party list on the right as I change the layout of the party via PHS. Also note how closely the game timer follows the timer shown on the menu.

One of my latest streams. Unfortunately portions of the audio have been muted due to copyright claims... against the BGM. *facepalms.* I have appealed these claims.



Instructions:

1. Unpack the archive to a place on your webserver. If this is XAMPP installed using default settings, my suggested location is C:\xampp\htdocs\streamstatus (create the streamstatus folder yourself).

2. Place a font in the font folder and a background in the base folder. Covarr provided me with the background I'm using. I'm not willing however to just assume that this is available to be reused, so I'm not packing it in. The background should be a 320x720 PNG with alpha channel (transparency) named background.png. You can grab fonts from your Windows installation by going to your Fonts folder (C:\Windows\Fonts, or just enter Fonts in the run dialog) and copying them. The PHP file is currently coded to use Microsoft's Verdana font (verdana.ttf). I could not pack this in with the archive for copyright reasons, but it ships with any recent version of windows.

3. Third, set FF7 to use a resolution of 960x720. (This isn't strictly necessary, but as the overlay is currently keyed to a 320x720 image, it looks best

4. Start up your streaming software and set it to use the overlay. For Open Broadcaster Software, this means having a base resolution of 1280x720, adding Final Fantasy 7 as a source (I find Monitor Capture works best due to a bug I've documented in another thread regarding Game Capture), moving it to the left side of the screen, then adding CLR Browser Plugin at a size of 320x720, adding the URL for the overlay as the source (see below), and moving it to the right hand side of the screen.

For a default installation into C:\xampp\htdocs\streamstatus, the url you want is http://127.0.0.1/streamstatus/ or http://127.0.0.1/streamstatus/index.html

5. Start up Final Fantasy 7 and load a saved game. *THIS IS IMPORTANT*. The status updater software *will not work* unless FF7 is running and ingame. If it can't find a valid savemap in RAM, it will complain and quit with an error. If you're running FF7 and ingame and you still get an error on steps 6-8, please check to make sure you aren't running two copies of ff7.exe (Ctrl+Alt+Del, Start Task Manager, Processes, look for ff7.exe). I've had this happen when ff7 didn't exit cleanly and it nearly gave me a heart attack. If you still have issues with the following step having made absolutely sure you have only one copy of ff7 running and it is ingame, please post your issue in this thread.

6. Start up the Updater GUI. This is StatusUpdater.exe in the same folder (C:\xampp\htdocs\streamstatus). Do not move this file out of the folder it's in, as it generates data files the web backend needs.

7. Type the last event (ie, "Just boarded the train back to Sector 7") into the top text box, then type any mods one by one into the lower textbox, clicking Add after each one. If you are using no mods, I would suggest typing in "None" and adding it. The content of these fields is essentially entirely up to you. Once you've done this, click commit changes.

8. Click Start. At this point, if you get an error, it is likely FF7 is not running or not ingame. If it is working properly, you should see "Running" where it originally read "Stopped", and the information in the upper left should update to match your game.

9. Preview your stream to make sure the overlay is working.

10. Start streaming!

11. Prior to quitting FF7, hit "Stop" for a graceful exit. It will exit automatically if it no longer finds FF7 running, but this behavior is somewhat undefined and may result in a corrupted status.xml file.

12. Feel free to delete any remaining status.xml and img(numbers).png files after you finish streaming, as these are generated on the fly by the program and will be overwritten by future uses of the program.



TECHNICAL DETAILS: (feel free to skip this entire block if you want)
Quote
The frontend of this program is using Visual Basic 2013 (aka VB .NET 4.5.1).  The frontend, when Start is pressed, looks for a process called "ff7.exe" and attaches itself to this process, and begins reading the in-memory copy of the Savemap, located at the offset 0xDBFD38 and at a size of roughly 4342 bytes. It grabs the entire savemap and turns it into a series of properties of an "FF7SaveMap" class. For this purpose I've also grabbed a number of variables which, as of yet, remain unused. I used the documentation of the SaveMap in the Qhimm wiki to find the important offsets for this purpose. It grabs this copy of this window of RAM every second, updates its internal variables, and then outputs the relevant variables to a very simple XML file, which is used by the backend to generate the image.

The backend of this program is using JavaScript and PHP.

The PHP portion takes a set of XML data provided by the frontend, and uses the PHP "GD" image editing library to add text to an image (it can also be used to create an image from scratch: replace calls to 'imagecreatefrompng("base/background.png")' with 'imagecreatetruecolor(320,720)' and follow these calls with 'imagesavealpha($img, true)'). As of the current version it relies on text spacing to enable creating the image using a variety of fonts and font sizes with similar results. Font sizes are currently expressed in Pixels. If you wish to express them in Point values instead, replace all references to "pxtoPt(19)" with the font size in Point. If you wish to simply change to a different Pixel size, replace "pxtoPt(19)" with "pxtoPt(yournumberhere)". If you wish to change the font from verdana, find and replace "font/verdana.ttf" with "font/yourchosenfonthere".

The JavaScript portion of the program is simple (and really, mostly not my own code :P. Though the code used is public domain.). It enables seamless updating of the image by loading new copies of the image in the background and swapping to them once they're loaded. Due to this, and depending on how slow your hard drive is and how much RAM you're using, the game timer can be "slow" by as much as a second, though it should usually be far less.

I am aware that a lot of this code is currently messy, and needs to be cleaned up to make it more easily user configurable. This cleanup is the current focus of work on the project. After cleanup, I intend to eventually make the program "generic" in scope, able to use a given pair of "memory layout" and "graphical layout" files to generate an overlay image for any game that has "stable" places in memory for its important gameplay variables. This will be most games running in emulators, most older games, and some (but not all or, really, most) newer ones.

EDIT: If you guys think this belongs in Tools, feel free to move it there. I didn't know if it really counted though, about half-and-half a streaming tool and an FF7 tool, and planned to become less and less targetted at FF7.

Pages: 1 2 3 4 [5] 6