Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Game Emu Player (foo_gep) by kode54 (Read 274112 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Game Emu Player (foo_gep) by kode54

Reply #175
Having some issues with NSFE files—they don't load in the proper order. I compared GEP with NotSo Fatso in Winamp and found that tracks load in the correct order in Fatso. Would I need to alter GEP settings for it to be fixed? I haven't changed any of the default settings.


Either change your default incoming file sort option to use %path% instead of %path_sort%, or wait for me to add %tracknumber% enumeration to NSFE files and add %tracknumber% to your default sort field.

The problem is that I enumerate the subsongs in the correct internal playlist order, but I expose the subsong numbers as the internal subsong numbers, rather than indexes into the internal playlist. The reason for this is so that each subsong number relates to the internal title/length/fade information. Otherwise, every time you edit the internal playlist, you would have to delete all the NSFE's tracks from the playlist and readd it.


That worked. Many thanks!

Game Emu Player (foo_gep) by kode54

Reply #176
I've extended the SPC echo buffer clearing hack. Now it will not only kick in if the echo buffer is enabled on load, but also if the echo buffer is enabled post-load. This fixes pops at the start of some tracks from the snesmusic.org Axelay dump.

The reason this does not affect any other SPC players is because they emulate the echo buffer outside of the SPC-700 memory, and clear their buffers on startup. SPC dumps may have garbage in that memory, since the emulators that are capable of dumping them, excluding Snes9x 1.52 and newer, and my modified versions of bsnes, do not emulate the echo buffer in the SPC-700 memory either, so the range in the dump will often contain garbage.

The public release of Snes_Spc, as well as Game_Music_Emu, is designed to clear the echo buffer upon loading the SPC dump, but only if the echo mute bit is not set. With my change, it will also clear it the first time the echo mute bit is cleared, if it has not already been cleared on load.

Game Emu Player (foo_gep) by kode54

Reply #177
First, thanks for this great program.

Second KSS files sound odd. http://anon48.f-m.fm/kss/ I downloaded Snatcher from this site and it seems as if all layers are playing at once a lot of times.

I tried getting MSXplug and Winamp to work to compare, it crashes saying I need MGSDRV.COM even though it's right in the directory. MSXplug was ported to foobar, but I don't think it'll work in version 1.

ETA: I got chipamp working for msx. It plays correctly, but doesn't sound as good as GEP. Not as sharp and clear.  Interestingly it will only open m3u files linked to a kss. Obviously the way GEP works is better since many of the kss files you find are loose.

 

Game Emu Player (foo_gep) by kode54

Reply #178
Any plans to support .SNDH format?

Game Emu Player (foo_gep) by kode54

Reply #179
I was working on SC68 support.

The API I found, was completely and utterly trash.

I might do VTX support next, not sure about sndh.

Game Emu Player (foo_gep) by kode54

Reply #180
Second KSS files sound odd. http://anon48.f-m.fm/kss/ I downloaded Snatcher from this site and it seems as if all layers are playing at once a lot of times.

I tried getting MSXplug and Winamp to work to compare, it crashes saying I need MGSDRV.COM even though it's right in the directory. MSXplug was ported to foobar, but I don't think it'll work in version 1.


I tested Snatcher again with the latest version of foo_gep, and the SCC+ problem still exists. At least Metal Gear 2 works, which in my opinion it made better use of the SCC chip then Snatcher ever did.

Nevermind since i got the NEC PC-88 version working with the S98 input plugin and the snatcher .s98 music files; and it sounds miles better then the MSX / SCC+ version.
"I never thought I'd see this much candy in one mission!"

Game Emu Player (foo_gep) by kode54

Reply #181
Any progress on fixing the problem with dropping notes in the YM2612 (in e.g. Sonic The Hedgehog "Invincibility" and "Game Over")?

Game Emu Player (foo_gep) by kode54

Reply #182
I'm begging for channel panning for 8-bit formats.  Please.

Game Emu Player (foo_gep) by kode54

Reply #183
Hey, Kode54, real nice work with this, but I have a request in case you ever swing back by here.

To my knowledge, when foo_gep grabs an M3u file for use with an HES/GBS/whatever that it's opened, it doesn't read the loop data that comes after the title and song length (when it's in title,length,loop,fade format). I know a lot of M3U files don't bother to include loop data, but I'd appreciate it if foo_gep could read and work with that field like NEZPlug does so that M3Us I create can work with both Winamp and Foobar. You don't necessarily have to put in the actual ability for the user to set the default number of loops, but it'd be nice if the M3Us could be formatted so that NEZPlug users can do so if they want.

Incidentally, I'd appreciate it if you could list out all the fields that foo_gep can read from #commented data in an M3U (like #Ripping: and #Game:).

I also can't seem to figure out if Foobar has an option to reload all of the playlist data whenever I open a file that has an accompanying M3U - I've been going into my Win XP Application Data folder to delete the playlist-related files that Foobar creates in order to refresh the tag information properly. I'm probably missing something somewhere..

Anyway, thanks for the plugin!

Game Emu Player (foo_gep) by kode54

Reply #184
Is it possible to change the playback sample rate for .SPC/.RSN files with foo_gep?

Game Emu Player (foo_gep) by kode54

Reply #185
To my knowledge, when foo_gep grabs an M3u file for use with an HES/GBS/whatever that it's opened, it doesn't read the loop data that comes after the title and song length

It attempts to read loop, fade, and repeat lengths. If a hyphen leads the loop field, it sets the loop length to the total length. If a hyphen follows it, it assumes the intro length was specified and that the loop length is the total length minus that. Otherwise, it's just a plain loop length.

I'll need to see your M3U file.

Is it possible to change the playback sample rate for .SPC/.RSN files with foo_gep?

Not without using a resampler DSP, and even if you do that, you won't be adding any information to the track. Snes_spc does not support synthesizing the sound output at anything but the native sample rate of the hardware, and setting any other rate simply passes the pre-mixed output through a general purpose sinc resampler.

Game Emu Player (foo_gep) by kode54

Reply #186
To my knowledge, when foo_gep grabs an M3u file for use with an HES/GBS/whatever that it's opened, it doesn't read the loop data that comes after the title and song length

It attempts to read loop, fade, and repeat lengths. If a hyphen leads the loop field, it sets the loop length to the total length. If a hyphen follows it, it assumes the intro length was specified and that the loop length is the total length minus that. Otherwise, it's just a plain loop length.

I'll need to see your M3U file.


sorry about the month delay, I just recently returned to this and tried to format files for a while (with the latest foo_gep to be sure), but all I did was get even more confused about what I was doing wrong and how to fix it. Rather than explain the errors I made, I'd appreciate it if you could instead show me how to do what I want with an M3U.

For example, here's a GBS+M3U combo that I recently saw submitted for someone else to tag (the tagged M3U can be found here). Here's a basic line from that set:

Code: [Select]
DMG-CVJ.gbs::GBS,6,Revenge (Stage 4 BGM),1:01,,10,

which follows the NEZPlug format of:
Code: [Select]
filename.ext::FILETYPE,#,TITLE,LENGTH,LOOP,FADE,REPEAT

with nothing in the LOOP or REPEAT fields due to the confusion between NEZPlug and foo_gep.
This should play the track the same way in both players.

Now, totally aside from whether any of these times are accurate, I can replicate it in NEZPlug with
Code: [Select]
DMG-CVJ.gbs::GBS,6,Revenge (Stage 4 BGM),33,28,10,

with an optional whatever at the end if I want to change the number of times it loops.
However, if I then try to use the playlist in foo_gep, the track plays for 28+10 fade, no matter what I put after the 10. I'm clearly misunderstanding some part of how the line should be written out. Furthermore, no matter how simply you've explained it to me, my attempts to make things work have only confused me further.

So I'd really appreciate it if you could tell me how that line would be handled in foo_gep to get the 1:10 (plus the possibility of more loops if desired), and if there's currently any way to achieve the same result in both players from a single file. If not, that's okay - this is really a matter of resolving a personal irritation due to my own failure to understand what to do.


As an aside, it's been noted elsewhere (and possibly brought to your attention) that a colon in the @TITLE field will produce an error in foo_gep when the playlist data is presented. It's a very minor issue, though.

Game Emu Player (foo_gep) by kode54

Reply #187
I've corrected some issues as you specified.

The length field, as I understand it from Nezplug++, includes both the intro and the first loop, so you would need to specify 1:01,28,10,. If that works wrong with Nezplug, let me know and I'll change it.

Game Emu Player (foo_gep) by kode54

Reply #188
Kode54,

You always put the sources online too but do you also put them in a repository like github? This way I could learn from your changes as you perform lots of maintenance on your plugins.

Game Emu Player (foo_gep) by kode54

Reply #189
He already haz a repo, except its not public.

Game Emu Player (foo_gep) by kode54

Reply #190
Then I would need to convert my existing repository into a public repository, and I have some things that I do not wish to make public or open source yet. For instance, Neill Corlett's libraries do not belong to me. Outside of foobar2000 projects, neither does QuickNES. I would have to ask these authors permission before I publish any source code on a public repository.

Game Emu Player (foo_gep) by kode54

Reply #191
MAJOR problem with the newest version of foo_gep 1.120.

I'd post a crash dump, but if I start fb2k with the component installed, the program will not start at all, nor does it create a dump.

The previous version worked perfectly fine like...15 minutes beforehand, uninstalled all other optional components, etc, still crashed.  The common denominator is this component.

Please fix somehow?  And/or old-version it so I can listen to all my musics again.

Wish I could be more help...sorry.

Game Emu Player (foo_gep) by kode54

Reply #192
Kill the version installed, then install the latest version. Completely idiotic error on my part, from committing partial changes into TFS, then pulling out an older version, which doesn't get tracked. I'm not using TFS now, and the import didn't catch those changes either.

This particular issue affected VGM files only, and presumably straight on startup if you have any in your Media Library. Remove the component from outside the player if necessary, then install the newest version.

Game Emu Player (foo_gep) by kode54

Reply #193
Well, now the player opens but I can't play VGM files still...

But at least I got a crash dump now.

Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 6855C40Ch
Access violation, operation: write, address: 00007FFEh

Call path:
threaded_process thread=>playlist_loader::g_process_path=>index_tracks_helper=>hintable=>subsong-loop=>get_info

Code bytes (6855C40Ch):
6855C3CCh:  75 EC 89 4D F4 8B 4B 18 8D 0C 71 89 4D F8 8B 75
6855C3DCh:  F8 8B 4D F4 0F BF 36 03 75 E4 0F BF 09 83 6D F8
6855C3ECh:  02 83 6D F4 02 03 CE FF 4D FC 83 7D FC 00 89 4D
6855C3FCh:  E4 7D DB 8B 73 18 03 7D F0 01 45 EC 8D 74 32 FE
6855C40Ch:  66 29 0E FF 4D E8 03 55 E0 83 7D E8 00 7D 95 5F
6855C41Ch:  5E C9 C3 55 8B EC 83 EC 18 8B 45 08 8B 40 1C 8B
6855C42Ch:  4D 0C 53 56 33 F6 99 49 46 D3 E6 2B C2 D1 F8 57
6855C43Ch:  8B C8 8B F8 81 C6 00 80 00 00 6B FF 7E F7 D9 03

Stack (0460DAF8h):
0460DAD8h:  EA7546E8 3FEFFCC6 6855C205 0460DB18
0460DAE8h:  6855C205 FFFFFFE1 851EB852 BC842108
0460DAF8h:  00000000 FFFFFFE1 00000000 00008000
0460DB08h:  0000001F 00000000 00000000 00000000
0460DB18h:  0460EAE8 FFFFFFFF 0460EAE8 6855C343
0460DB28h:  03106FE8 031077D8 0460EB14 00000000
0460DB38h:  93819000 413DA010 00000000 00000000
0460DB48h:  00000000 00000000 F6AD6378 3FDE5E6E
0460DB58h:  4787074A 4786FE27 4786DFFA 4786C88C
0460DB68h:  478699B1 47865D89 47861420 4785BD89
0460DB78h:  478559DA 4784E92B 4784681B 4783DDC6
0460DB88h:  478346CF 4782A359 4781F38C 47813794
0460DB98h:  47806F9E 477F37B7 477D78FC 477BA37B
0460DBA8h:  4779B7A2 4777B5E8 47759EC9 477372C6
0460DBB8h:  47713260 476EDE22 476C7699 4769FC55
0460DBC8h:  47676FED 4764D1F9 47622314 475F63DC
0460DBD8h:  475C94F7 4759B707 4756CAB5 4753D0AA
0460DBE8h:  4750C995 474DB620 474A96FC 47476CDC
0460DBF8h:  47443873 4740FA72 473DB391 473A6481
0460DC08h:  47370DFB 4733B0B3 47304D5E 472CE4B4

Registers:
EAX: 00000000, EBX: 03107AB8, ECX: 00008000, EDX: 00000000
ESI: 00007FFE, EDI: 00000000, EBP: 0460DB20, ESP: 0460DAF8

Crash location:
Module: foo_gep
Offset: 1C40Ch

Loaded modules:
foobar2000                      loaded at 00C90000h - 00E46000h
ntdll                            loaded at 77C70000h - 77DF0000h
kernel32                        loaded at 75EE0000h - 75FF0000h
KERNELBASE                      loaded at 75E90000h - 75ED6000h
snxhk                            loaded at 748F0000h - 74924000h
COMCTL32                        loaded at 73320000h - 734BE000h
msvcrt                          loaded at 75DE0000h - 75E8C000h
GDI32                            loaded at 76200000h - 76290000h
USER32                          loaded at 75720000h - 75820000h
ADVAPI32                        loaded at 75820000h - 758C0000h
sechost                          loaded at 765A0000h - 765B9000h
RPCRT4                          loaded at 76670000h - 76760000h
SspiCli                          loaded at 75350000h - 753B0000h
CRYPTBASE                        loaded at 75340000h - 7534C000h
LPK                              loaded at 754F0000h - 754FA000h
USP10                            loaded at 75680000h - 7571D000h
SHLWAPI                          loaded at 75990000h - 759E7000h
DSOUND                          loaded at 70950000h - 709C2000h
ole32                            loaded at 759F0000h - 75B4C000h
WINMM                            loaded at 730B0000h - 730E2000h
POWRPROF                        loaded at 6F600000h - 6F625000h
SETUPAPI                        loaded at 76400000h - 7659D000h
CFGMGR32                        loaded at 765C0000h - 765E7000h
OLEAUT32                        loaded at 75D50000h - 75DDF000h
DEVOBJ                          loaded at 75FF0000h - 76002000h
UxTheme                          loaded at 71C90000h - 71D10000h
SHELL32                          loaded at 76760000h - 773AA000h
zlib1                            loaded at 5A4C0000h - 5A4D4000h
shared                          loaded at 6C810000h - 6C83B000h
imagehlp                        loaded at 75D20000h - 75D4A000h
dbghelp                          loaded at 74280000h - 7436B000h
COMDLG32                        loaded at 765F0000h - 7666B000h
gdiplus                          loaded at 71DB0000h - 71F40000h
Secur32                          loaded at 73A70000h - 73A78000h
CRYPT32                          loaded at 75500000h - 7561D000h
MSASN1                          loaded at 761F0000h - 761FC000h
IMM32                            loaded at 75400000h - 75460000h
MSCTF                            loaded at 758C0000h - 7598C000h
dwmapi                          loaded at 71C70000h - 71C83000h
foo_input_usf                    loaded at 6C070000h - 6C0EF000h
MSVCR90                          loaded at 74470000h - 74513000h
foo_freedb2                      loaded at 6C030000h - 6C070000h
foo_unpack                      loaded at 6BF80000h - 6BFAE000h
foo_rgscan                      loaded at 699A0000h - 699EB000h
foo_ui_std                      loaded at 698B0000h - 69995000h
MSIMG32                          loaded at 725B0000h - 725B5000h
foo_input_std                    loaded at 686A0000h - 687FB000h
foo_fileops                      loaded at 68650000h - 68697000h
foo_dsp_std                      loaded at 68600000h - 68648000h
foo_gep                          loaded at 68540000h - 685FD000h
foo_input_vio2sf                loaded at 10000000h - 1003B000h
foo_cdda                        loaded at 684F0000h - 6853E000h
foo_albumlist                    loaded at 68490000h - 684EC000h
foo_converter                    loaded at 68410000h - 6848C000h
CLBCatQ                          loaded at 76010000h - 76093000h
MMDevApi                        loaded at 71C30000h - 71C69000h
PROPSYS                          loaded at 71B30000h - 71C25000h
AUDIOSES                        loaded at 71AF0000h - 71B26000h
sud                              loaded at 68350000h - 6840B000h
ADVPACK                          loaded at 68320000h - 6834E000h
VERSION                          loaded at 74380000h - 74389000h
DUI70                            loaded at 6F1B0000h - 6F262000h

Stack dump analysis:
Address: 6855C343h (foo_gep+1C343h)
Address: 6858EFA2h (foo_gep+4EFA2h), symbol: "foobar2000_get_interface" (+18852h)
Address: 00D9157Ah (foobar2000+10157Ah)
Address: 685487C9h (foo_gep+87C9h)
Address: 00CCBA0Ch (foobar2000+3BA0Ch)
Address: 00CCC641h (foobar2000+3C641h)
Address: 00CCBEF7h (foobar2000+3BEF7h)
Address: 685487C9h (foo_gep+87C9h)
Address: 00DA38A8h (foobar2000+1138A8h)
Address: 68578346h (foo_gep+38346h), symbol: "foobar2000_get_interface" (+1BF6h)
Address: 685A01C4h (foo_gep+601C4h), symbol: "foobar2000_get_interface" (+29A74h)
Address: 6857835Bh (foo_gep+3835Bh), symbol: "foobar2000_get_interface" (+1C0Bh)
Address: 00DF7684h (foobar2000+167684h)
Address: 6858F13Eh (foo_gep+4F13Eh), symbol: "foobar2000_get_interface" (+189EEh)
Address: 6858F1DDh (foo_gep+4F1DDh), symbol: "foobar2000_get_interface" (+18A8Dh)
Address: 68548858h (foo_gep+8858h)
Address: 6858EAB5h (foo_gep+4EAB5h), symbol: "foobar2000_get_interface" (+18365h)
Address: 685487C9h (foo_gep+87C9h)
Address: 6858DFC8h (foo_gep+4DFC8h), symbol: "foobar2000_get_interface" (+17878h)
Address: 6858DFD4h (foo_gep+4DFD4h), symbol: "foobar2000_get_interface" (+17884h)
Address: 685487C9h (foo_gep+87C9h)
Address: 68580110h (foo_gep+40110h), symbol: "foobar2000_get_interface" (+99C0h)
Address: 6858DFD4h (foo_gep+4DFD4h), symbol: "foobar2000_get_interface" (+17884h)
Address: 6858E268h (foo_gep+4E268h), symbol: "foobar2000_get_interface" (+17B18h)
Address: 6858E1E9h (foo_gep+4E1E9h), symbol: "foobar2000_get_interface" (+17A99h)
Address: 685A6D74h (foo_gep+66D74h), symbol: "foobar2000_get_interface" (+30624h)
Address: 685A6D50h (foo_gep+66D50h), symbol: "foobar2000_get_interface" (+30600h)
Address: 6858DF46h (foo_gep+4DF46h), symbol: "foobar2000_get_interface" (+177F6h)
Address: 68548858h (foo_gep+8858h)
Address: 685A6D74h (foo_gep+66D74h), symbol: "foobar2000_get_interface" (+30624h)
Address: 68580110h (foo_gep+40110h), symbol: "foobar2000_get_interface" (+99C0h)
Address: 6858E1E9h (foo_gep+4E1E9h), symbol: "foobar2000_get_interface" (+17A99h)
Address: 6858E4DAh (foo_gep+4E4DAh), symbol: "foobar2000_get_interface" (+17D8Ah)
Address: 685A6D88h (foo_gep+66D88h), symbol: "foobar2000_get_interface" (+30638h)
Address: 685A6D50h (foo_gep+66D50h), symbol: "foobar2000_get_interface" (+30600h)
Address: 6858E4E8h (foo_gep+4E4E8h), symbol: "foobar2000_get_interface" (+17D98h)
Address: 68548858h (foo_gep+8858h)
Address: 6858E865h (foo_gep+4E865h), symbol: "foobar2000_get_interface" (+18115h)
Address: 685A6D88h (foo_gep+66D88h), symbol: "foobar2000_get_interface" (+30638h)
Address: 685A5BE4h (foo_gep+65BE4h), symbol: "foobar2000_get_interface" (+2F494h)
Address: 685A6D74h (foo_gep+66D74h), symbol: "foobar2000_get_interface" (+30624h)
Address: 685A5BE4h (foo_gep+65BE4h), symbol: "foobar2000_get_interface" (+2F494h)
Address: 685A6D84h (foo_gep+66D84h), symbol: "foobar2000_get_interface" (+30634h)
Address: 685A6D50h (foo_gep+66D50h), symbol: "foobar2000_get_interface" (+30600h)
Address: 6858EA5Eh (foo_gep+4EA5Eh), symbol: "foobar2000_get_interface" (+1830Eh)
Address: 685A6D88h (foo_gep+66D88h), symbol: "foobar2000_get_interface" (+30638h)
Address: 6858D798h (foo_gep+4D798h), symbol: "foobar2000_get_interface" (+17048h)
Address: 685A6D88h (foo_gep+66D88h), symbol: "foobar2000_get_interface" (+30638h)
Address: 77CE71D5h (ntdll+771D5h), symbol: "WinSqmSetIfMaxDWORD" (+31h)
Address: 685A6D88h (foo_gep+66D88h), symbol: "foobar2000_get_interface" (+30638h)
Address: 77CCB459h (ntdll+5B459h), symbol: "LdrRemoveLoadAsDataTable" (+D50h)
Address: 77CCB46Dh (ntdll+5B46Dh), symbol: "LdrRemoveLoadAsDataTable" (+D64h)
Address: 77CCB42Bh (ntdll+5B42Bh), symbol: "LdrRemoveLoadAsDataTable" (+D22h)
Address: 6858F456h (foo_gep+4F456h), symbol: "foobar2000_get_interface" (+18D06h)
Address: 77CCB3CEh (ntdll+5B3CEh), symbol: "LdrRemoveLoadAsDataTable" (+CC5h)
Address: 6858F456h (foo_gep+4F456h), symbol: "foobar2000_get_interface" (+18D06h)
Address: 685A62F8h (foo_gep+662F8h), symbol: "foobar2000_get_interface" (+2FBA8h)
Address: 6BF848B2h (foo_unpack+48B2h)
Address: 6BFA4178h (foo_unpack+24178h), symbol: "foobar2000_get_interface" (+155F8h)
Address: 6BFA11C0h (foo_unpack+211C0h), symbol: "foobar2000_get_interface" (+12640h)
Address: 6BFA073Bh (foo_unpack+2073Bh), symbol: "foobar2000_get_interface" (+11BBBh)
Address: 6BF817F2h (foo_unpack+17F2h)
Address: 6BFA30F5h (foo_unpack+230F5h), symbol: "foobar2000_get_interface" (+14575h)
Address: 6BF83573h (foo_unpack+3573h)
Address: 77C80133h (ntdll+10133h), symbol: "KiUserExceptionDispatcher" (+Fh)
Address: 75E9B9BCh (KERNELBASE+B9BCh), symbol: "RaiseException" (+58h)
Address: 685A5C10h (foo_gep+65C10h), symbol: "foobar2000_get_interface" (+2F4C0h)
Address: 6BF93EFAh (foo_unpack+13EFAh), symbol: "foobar2000_get_interface" (+537Ah)
Address: 6BFA0D8Bh (foo_unpack+20D8Bh), symbol: "foobar2000_get_interface" (+1220Bh)
Address: 685A62F8h (foo_gep+662F8h), symbol: "foobar2000_get_interface" (+2FBA8h)
Address: 75E9B9BCh (KERNELBASE+B9BCh), symbol: "RaiseException" (+58h)
Address: 77CA3C94h (ntdll+33C94h), symbol: "RtlImageNtHeader" (+B10h)
Address: 77CA3CC3h (ntdll+33CC3h), symbol: "RtlImageNtHeader" (+B3Fh)
Address: 75ED012Ch (KERNELBASE+4012Ch), symbol: "WaitForThreadpoolWorkCallbacks" (+5B6h)
Address: 77CE71D5h (ntdll+771D5h), symbol: "WinSqmSetIfMaxDWORD" (+31h)
Address: 77CA3CC3h (ntdll+33CC3h), symbol: "RtlImageNtHeader" (+B3Fh)
Address: 77CA3CEEh (ntdll+33CEEh), symbol: "RtlImageNtHeader" (+B6Ah)
Address: 77CE71D5h (ntdll+771D5h), symbol: "WinSqmSetIfMaxDWORD" (+31h)
Address: 77C9E023h (ntdll+2E023h), symbol: "RtlFreeHeap" (+7Eh)
Address: 77CB26A4h (ntdll+426A4h), symbol: "RtlReAllocateHeap" (+1B3h)
Address: 77CB26B8h (ntdll+426B8h), symbol: "RtlReAllocateHeap" (+1C7h)
Address: 77C9E023h (ntdll+2E023h), symbol: "RtlFreeHeap" (+7Eh)
Address: 77C9E38Ch (ntdll+2E38Ch), symbol: "RtlInitUnicodeString" (+164h)
Address: 00D81C00h (foobar2000+F1C00h)
Address: 77C9E38Ch (ntdll+2E38Ch), symbol: "RtlInitUnicodeString" (+164h)
Address: 77C9E0F2h (ntdll+2E0F2h), symbol: "RtlAllocateHeap" (+ACh)
Address: 77CA3C94h (ntdll+33C94h), symbol: "RtlImageNtHeader" (+B10h)
Address: 77CA3CC3h (ntdll+33CC3h), symbol: "RtlImageNtHeader" (+B3Fh)
Address: 77C9E38Ch (ntdll+2E38Ch), symbol: "RtlInitUnicodeString" (+164h)
Address: 00D9157Ah (foobar2000+10157Ah)
Address: 00C9DF1Fh (foobar2000+DF1Fh)
Address: 77CE71D5h (ntdll+771D5h), symbol: "WinSqmSetIfMaxDWORD" (+31h)
Address: 77CA3CC3h (ntdll+33CC3h), symbol: "RtlImageNtHeader" (+B3Fh)
Address: 77CA3CEEh (ntdll+33CEEh), symbol: "RtlImageNtHeader" (+B6Ah)
Address: 6859C698h (foo_gep+5C698h), symbol: "foobar2000_get_interface" (+25F48h)
Address: 6855C580h (foo_gep+1C580h)
Address: 6855B459h (foo_gep+1B459h)
Address: 685578ECh (foo_gep+178ECh)

Environment:
App: foobar2000 v1.1.11
UI: Default User Interface 0.9.5

Components:
Core (2012-02-04 13:05:48 UTC)
    foobar2000 core 1.1.11
foo_albumlist.dll (2012-02-04 13:04:12 UTC)
    Album List 4.5
foo_cdda.dll (2012-02-04 13:03:52 UTC)
    CD Audio Decoder 3.0
foo_converter.dll (2012-02-04 13:04:00 UTC)
    Converter 1.5
foo_dsp_std.dll (2012-02-04 13:04:14 UTC)
    Standard DSP Array 1.0
foo_fileops.dll (2012-02-04 13:03:02 UTC)
    File Operations 2.1.3
foo_freedb2.dll (2012-02-04 13:03:02 UTC)
    freedb Tagger 0.6.4
foo_gep.dll (2012-02-22 20:11:01 UTC)
    Game Emu Player 1.121
foo_input_std.dll (2012-02-04 13:05:10 UTC)
    Standard Input Array 1.0
foo_input_usf.dll (2012-02-22 04:10:34 UTC)
    LazyUSF 2.1 (Build Jun 26 2011)
foo_input_vio2sf.dll (2010-01-20 04:32:42 UTC)
    2SF decoder / DeSmuME v0.8.0 0.22
foo_rgscan.dll (2012-02-04 13:03:48 UTC)
    ReplayGain Scanner 2.1.2
foo_ui_std.dll (2012-02-04 13:04:08 UTC)
    Default User Interface 0.9.5
foo_unpack.dll (2012-02-04 13:03:26 UTC)
    ZIP/GZIP/RAR Reader 1.6

Recent events:
Album List refreshed in: 0:00.000310
Startup time : 0:00.212398


Machine specifications:
OS: Windows 6.1.7601 Service Pack 1 x64
CPU: Intel® Core™ i7-2630QM CPU @ 2.00GHz, features: MMX SSE SSE2 SSE3 SSE4.1 SSE4.2
Audio: Headset Earphone (3- Microsoft LifeChat LX-3000 ); Speakers (Realtek High Definition Audio); Realtek Digital Output (Realtek High Definition Audio)

Here's the dump file as well:  http://dl.dropbox.com/u/7951825/failure_00000004.dmp

Game Emu Player (foo_gep) by kode54

Reply #194
Uh, yeah. When I copied the correct file over from my previous source tree, it still had an older modification time than the file it replaced, so Visual Studio didn't actually recompile it. I had to recompile it manually, heh.

Game Emu Player (foo_gep) by kode54

Reply #195
Thanks, working just fine now ^^

Game Emu Player (foo_gep) by kode54

Reply #196
Yeah, it would have been working in the first place if I had actually tested my changes before uploading.

Game Emu Player (foo_gep) by kode54

Reply #197
I've corrected some issues as you specified.

The length field, as I understand it from Nezplug++, includes both the intro and the first loop, so you would need to specify 1:01,28,10,. If that works wrong with Nezplug, let me know and I'll change it.


Thanks for the work on this, but while I thought it was working fine when I first tried it out shortly after you updated, I recently returned to this when I had a bigger block of free time and realized things weren't quite right. I feel like I messed something up somewhere, but I'm sure I'm using the latest foo_gep (and Foobar v.1.1.11)

Going back to the line I posted before:
Code: [Select]
DMG-CVJ.gbs::GBS,6,Revenge (Stage 4 BGM),33,28,10,

As already established, the four trailing numbers are initial loop (including intro) length, additional loop length, fade length, number of loops desired.
I probably mis-communicated something, but the initial loop plus intro for this song is ~33, with the ~28 being the second loop achieved if loops are set to 2 (or not specified in NEZPlug).

foo_gep at first seems to be correctly reading everything, showing a length of 1:11 like Winamp+NEZPlug does when I have:
Code: [Select]
DMG-CVJ.gbs::GBS,6,Revenge (Stage 4 BGM),33,28,10,2

However, while Winamp plays both the initial intro+loop, second loop and fade, Foobar only plays the first loop (33), then does the 10 second fade, despite showing half the song still to go. After it finishes fading it jumps to the next song in the playlist, even though it shouldn't have finished the song it was playing.
Foobar will adjust the supposed playing time based on the number of loops specified, but it always fades out after the initial intro+loop length and jumps to the next song after the fade.

I may be overlooking something already discussed, but I think there is still an error somewhere.

Game Emu Player (foo_gep) by kode54

Reply #198
Both problems should be fixed now.

Game Emu Player (foo_gep) by kode54

Reply #199
Regarding the SPC option "Remove surround effect", is that an effect native to SNES SPC processing or is it an effect that GEP adds?

Awesome work, BTW.  Foobar converts all my VGM to portable formats beautifully.