Author Topic: _[ FinalBurn Alpha: Tips and Tricks ]_  (Read 55067 times)

Offline Badablek

  • Jr. Member
  • **
  • Posts: 63
  • Karma: +0/-0
  • Member
Re: FBA Tips and Tricks
« Reply #60 on: August 21, 2005, 07:58:24 AM »
How to completely disable CRC checking.

SRC/BURNER/BZIP.CPP

find this:
Code: [Select]
if (List[nFind].nLen == ri.nLen) {
if (ri.nCrc) { // If we know the CRC
if (List[nFind].nCrc != ri.nCrc) { // Length okay, but CRC wrong
RomFind[i].nState = 2;
}
}

replace with this:
Code: [Select]
if (List[nFind].nLen == ri.nLen) {
if (ri.nCrc) { // If we know the CRC
if (List[nFind].nCrc != ri.nCrc) { // Length okay, but CRC wrong
RomFind[i].nState = [color=red]1; // Changed 2 to 1[/color]
}
}

Why not adding a check box in order to enable/disable the No CRC check :

in src\burner\win32\resource.h

Find:

Code: [Select]
#define IDC_SEL_ASCIIONLY 20063
ADD this after

Code: [Select]
#define IDC_SEL_NOCRC 20130
------

in src\burner\win32\sel.cpp

Find:

Code: [Select]
#define ASCIIONLY (1 << 19)
ADD this after

Code: [Select]
#define NOCRC (1 << 20)
Find:

Code: [Select]
CheckDlgButton(hSelDlg, IDC_SEL_ASCIIONLY, nLoadMenuShowX & ASCIIONLY ? BST_CHECKED : BST_UNCHECKED);
ADD this after

Code: [Select]
CheckDlgButton(hSelDlg, IDC_SEL_NOCRC, nLoadMenuShowX & NOCRC ? BST_CHECKED : BST_UNCHECKED);
Find:

Code: [Select]
case IDC_SEL_ASCIIONLY:
nLoadMenuShowX ^= ASCIIONLY;
RebuildEverything();
break;

ADD this after

Code: [Select]
case IDC_SEL_NOCRC:
nLoadMenuShowX ^= NOCRC;
bRescanRoms = true; //update the game selection screen
CreateROMInfo();
RebuildEverything();
break;

------

in src\burner\bzip.cpp

Find:

Code: [Select]
if (List[nFind].nLen == ri.nLen) {
if (ri.nCrc) { // If we know the CRC
if (List[nFind].nCrc != ri.nCrc) { // Length okay, but CRC wrong
RomFind[i].nState = 2;
}
}

REPLACE with this

Code: [Select]
if (List[nFind].nLen == ri.nLen) {
if (ri.nCrc) { // If we know the CRC
if (List[nFind].nCrc != ri.nCrc) { // Length okay, but CRC wrong
if (nLoadMenuShowX & NOCRC) {
RomFind[i].nState = 1;
} else {
RomFind[i].nState = 2;
}
}
}

------

in src\burner\win32\app.rc

Find:

Code: [Select]
CONTROL "Use only Latin text",IDC_SEL_ASCIIONLY,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,76,241,100,14
REPLACE with this

Code: [Select]
CONTROL "Use only Latin text",IDC_SEL_ASCIIONLY,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,76,241,80,14
CONTROL "No CRC check",IDC_SEL_NOCRC,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,241,60,14

Now you have the choice to enable or disable the CRC check.

ps :

Code: [Select]
case IDC_SEL_NOCRC:
nLoadMenuShowX ^= NOCRC;
bRescanRoms = true; //update the game selection screen
CreateROMInfo();
RebuildEverything();
break;

bRescanRoms = true;
CreateROMInfo();

this rescans the romset in order to update the icon in front of games that are bad (wrong CRC), so if the NO CRC option is enabled, it removes the red icon in front of the games that have bad crc....



[EDIT]

hmmm, the "code" feature of the forum do not like tabulation :(

#define IDC_SEL_ASCIIONLY         20063
« Last Edit: August 21, 2005, 08:08:13 AM by Badablek »

Offline Badablek

  • Jr. Member
  • **
  • Posts: 63
  • Karma: +0/-0
  • Member
Re: FBA Tips and Tricks
« Reply #61 on: August 21, 2005, 08:17:01 AM »
what about if we disable the size check with the crc check? sometimes we have different crcs due to a size mismatch...

note: this code considers that you have the disable crc check with checkbox option :wink:

ooops....it seems this feature was already done by someone else  :biggrin:

BTW I learn to write some code, even if it was already done  :smilie:

Offline Shoometsu

  • Jr. Member
  • **
  • Posts: 66
  • Karma: +0/-0
  • I finally have an avatar XD
Re: FBA Tips and Tricks
« Reply #62 on: August 22, 2005, 10:00:34 PM »
yeah , the disble crc and the checkbox for this where developed for someone else, I just changed the crc check to ignore a size mismatch error too :biggrin:

if anoter one have done this before I don't know, because I've never seen this before, so I've posted it (yeah, I don't browse by chinese forums,  I won't understand anything) :redface:
<- Who are you?

Offline Badablek

  • Jr. Member
  • **
  • Posts: 63
  • Karma: +0/-0
  • Member
Re: FBA Tips and Tricks
« Reply #63 on: April 18, 2006, 06:18:14 AM »
Hi,

Changelog of FBA-xxx Pro 1.12
Quote
- Patched out HW test in Neo-Geo games. (removes ugly green screen on boot) (by iq_132)


Any chance to post the trick to disable the Neogeo Hardware Test ? It sounds very interesting ^_^

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: FBA Tips and Tricks
« Reply #64 on: April 18, 2006, 07:33:00 PM »
Code: [Select]
// Hacks for Neo-Geo BIOS
for (int i = 0x10000; i < 0x12000; i+=2) {
if ((*((unsigned short*)(Neo68KBIOS + i + 0)) == 0x4EBA) && (*((unsigned short*)(Neo68KBIOS + i + 4)) == 0x13C0) &&
    (*((unsigned short*)(Neo68KBIOS + i + 6)) == 0x003A) && (*((unsigned short*)(Neo68KBIOS + i + 8)) == 0x001D) &&
    (*((unsigned short*)(Neo68KBIOS + i + 10)) == 0x5206) && (*((unsigned short*)(Neo68KBIOS + i + 12)) == 0x41F9) &&
    (*((unsigned short*)(Neo68KBIOS + i + 14)) == 0x00D0))
{
// Remove memory check for now
*((unsigned short*)(Neo68KBIOS + i + 0x000)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x002)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x016)) = 0x4EF9;
*((unsigned short*)(Neo68KBIOS + i + 0x018)) = 0x00C1;
*((unsigned short*)(Neo68KBIOS + i + 0x01A)) = 0x006A + (i&0xFFFF);

// Patch Calendar errors
*((unsigned short*)(Neo68KBIOS + i + 0x114)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x116)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x11C)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x11E)) = 0x4E71;

// Patch checksum test
*((unsigned short*)(Neo68KBIOS + i + 0x162)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x164)) = 0x4E71;

i = 0x12001;
}
}


Offline Badablek

  • Jr. Member
  • **
  • Posts: 63
  • Karma: +0/-0
  • Member
Re: FBA Tips and Tricks
« Reply #65 on: April 19, 2006, 07:08:11 AM »
Thanks  :biggrin:

Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: FBA Tips and Tricks
« Reply #66 on: April 20, 2006, 06:56:13 AM »
Code: [Select]
// Hacks for Neo-Geo BIOS
for (int i = 0x10000; i < 0x12000; i+=2) {
if ((*((unsigned short*)(Neo68KBIOS + i + 0)) == 0x4EBA) && (*((unsigned short*)(Neo68KBIOS + i + 4)) == 0x13C0) &&
    (*((unsigned short*)(Neo68KBIOS + i + 6)) == 0x003A) && (*((unsigned short*)(Neo68KBIOS + i + 8)) == 0x001D) &&
    (*((unsigned short*)(Neo68KBIOS + i + 10)) == 0x5206) && (*((unsigned short*)(Neo68KBIOS + i + 12)) == 0x41F9) &&
    (*((unsigned short*)(Neo68KBIOS + i + 14)) == 0x00D0))
{
// Remove memory check for now
*((unsigned short*)(Neo68KBIOS + i + 0x000)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x002)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x016)) = 0x4EF9;
*((unsigned short*)(Neo68KBIOS + i + 0x018)) = 0x00C1;
*((unsigned short*)(Neo68KBIOS + i + 0x01A)) = 0x006A + (i&0xFFFF);

// Patch Calendar errors
*((unsigned short*)(Neo68KBIOS + i + 0x114)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x116)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x11C)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x11E)) = 0x4E71;

// Patch checksum test
*((unsigned short*)(Neo68KBIOS + i + 0x162)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x164)) = 0x4E71;

i = 0x12001;
}
}


Hi IQ is there a Mame conversion for this ? hehe

EDIT: Never mind I worked it out :P
« Last Edit: April 22, 2006, 06:27:38 AM by James33 »
IQ Forum Member

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: FBA Tips and Tricks
« Reply #67 on: April 22, 2006, 07:58:40 PM »
I think adding this to MACHINE_RESET( neogeo ) will work

Code: [Select]
UINT16 *bios16 = (UINT16*)memory_region( REGION_USER1 );

// Hacks for Neo-Geo BIOS
for (int i = 0x10000; i < 0x12000; i+=2) {
if ((bios16[(i + 0)/2] == 0x4EBA)  && (bios16[(i + 4)/2] == 0x13C0) &&
    (bios16[(i + 6)/2] == 0x003A)  && (bios16[(i + 8)/2] == 0x001D) &&
    (bios16[(i + 10)/2] == 0x5206) && (bios16[(i + 12)/2] == 0x41F9) &&
    (bios16[(i + 14)/2] == 0x00D0))
{
// Remove memory check for now
bios16[(i + 0x000)/2] = 0x4E71;
bios16[(i + 0x002)/2] = 0x4E71;
bios16[(i + 0x016)/2] = 0x4EF9;
bios16[(i + 0x018)/2] = 0x00C1;
bios16[(i + 0x01A)/2] = 0x006A + (i&0xFFFF);

// Patch Calendar errors
bios16[(i + 0x114)/2] = 0x4E71;
bios16[(i + 0x116)/2] = 0x4E71;
bios16[(i + 0x11C)/2] = 0x4E71;
bios16[(i + 0x11E)/2] = 0x4E71;

// Patch checksum test
bios16[(i + 0x162)/2] = 0x4E71;
bios16[(i + 0x164)/2] = 0x4E71;

i = 0x12001;
}
}


Offline James33

  • Expert
  • *****
  • Posts: 532
  • Karma: +3/-0
  • The Mame Man
    • Emulation Zone
Re: FBA Tips and Tricks
« Reply #68 on: April 23, 2006, 09:01:08 AM »
Thanks IQ :D
I put it in the DRIVER INT :)  It seems to work there just a few small changes .

Code: [Select]
/* This function is only called once per game. */
DRIVER_INIT( neogeo )
{
extern struct YM2610interface neogeo_ym2610_interface;
UINT16 *mem16 = (UINT16 *)memory_region(REGION_CPU1);
UINT16 *bios16 = (UINT16*)memory_region( REGION_USER1 );
int i;
int tileno,numtiles;

numtiles = memory_region_length(REGION_GFX3)/128;
for (tileno = 0;tileno < numtiles;tileno++)
{
unsigned char swap[128];
UINT8 *gfxdata;
int x,y;
unsigned int pen;

gfxdata = &memory_region(REGION_GFX3)[128 * tileno];

memcpy(swap,gfxdata,128);

for (y = 0;y < 16;y++)
{
UINT32 dw;

dw = 0;
for (x = 0;x < 8;x++)
{
pen  = ((swap[64 + 4*y + 3] >> x) & 1) << 3;
pen |= ((swap[64 + 4*y + 1] >> x) & 1) << 2;
pen |= ((swap[64 + 4*y + 2] >> x) & 1) << 1;
pen |= (swap[64 + 4*y   ] >> x) & 1;
dw |= pen << 4*x;
}
*(gfxdata++) = dw>>0;
*(gfxdata++) = dw>>8;
*(gfxdata++) = dw>>16;
*(gfxdata++) = dw>>24;

dw = 0;
for (x = 0;x < 8;x++)
{
pen  = ((swap[4*y + 3] >> x) & 1) << 3;
pen |= ((swap[4*y + 1] >> x) & 1) << 2;
pen |= ((swap[4*y + 2] >> x) & 1) << 1;
pen |= (swap[4*y ] >> x) & 1;
dw |= pen << 4*x;
}
*(gfxdata++) = dw>>0;
*(gfxdata++) = dw>>8;
*(gfxdata++) = dw>>16;
*(gfxdata++) = dw>>24;
}
}

if (memory_region(REGION_SOUND2))
{
logerror("using memory region %d for Delta T samples\n",REGION_SOUND2);
neogeo_ym2610_interface.pcmromb = REGION_SOUND2;
}
else
{
logerror("using memory region %d for Delta T samples\n",REGION_SOUND1);
neogeo_ym2610_interface.pcmromb = REGION_SOUND1;
}

/* Allocate ram banks */
neogeo_ram16 = auto_malloc (0x10000);
memory_set_bankptr(1, neogeo_ram16);

/* Set the biosbank */
memory_set_bankptr(3, memory_region(REGION_USER1));

/* Set the 2nd ROM bank */
if (memory_region_length(REGION_CPU1) > 0x100000)
neogeo_set_cpu1_second_bank(0x100000);
else
neogeo_set_cpu1_second_bank(0x000000);

/* Set the sound CPU ROM banks */
neogeo_init_cpu2_setbank();

/* Allocate and point to the memcard - bank 5 */
neogeo_memcard = auto_malloc(0x800);
memset(neogeo_memcard, 0, 0x800);

mem16 = (UINT16 *)memory_region(REGION_USER1);


/* irritating maze uses a trackball */
if (!strcmp(Machine->gamedrv->name,"irrmaze"))
neogeo_has_trackball = 1;
else
neogeo_has_trackball = 0;

// Hacks for Neo-Geo BIOS
for( i = 0x10000; i < 0x12000; i+=2) {
if ((bios16[(i + 0)/2] == 0x4EBA)  && (bios16[(i + 4)/2] == 0x13C0) &&
    (bios16[(i + 6)/2] == 0x003A)  && (bios16[(i + 8)/2] == 0x001D) &&
    (bios16[(i + 10)/2] == 0x5206) && (bios16[(i + 12)/2] == 0x41F9) &&
    (bios16[(i + 14)/2] == 0x00D0))
{
// Remove memory check for now
bios16[(i + 0x000)/2] = 0x4E71;
bios16[(i + 0x002)/2] = 0x4E71;
bios16[(i + 0x016)/2] = 0x4EF9;
bios16[(i + 0x018)/2] = 0x00C1;
bios16[(i + 0x01A)/2] = 0x006A + (i&0xFFFF);

// Patch Calendar errors
bios16[(i + 0x114)/2] = 0x4E71;
bios16[(i + 0x116)/2] = 0x4E71;
bios16[(i + 0x11C)/2] = 0x4E71;
bios16[(i + 0x11E)/2] = 0x4E71;

// Patch checksum test
bios16[(i + 0x162)/2] = 0x4E71;
bios16[(i + 0x164)/2] = 0x4E71;

i = 0x12001;
}
}

{ /* info from elsemi, this is how nebula works, is there a better way in mame? */
UINT8* gamerom = memory_region(REGION_CPU1);
neogeo_game_vectors = auto_malloc (0x80);
memcpy( neogeo_game_vectors, gamerom, 0x80 );
}
}
« Last Edit: April 23, 2006, 09:16:16 AM by James33 »
IQ Forum Member

Offline Death Metal

  • Member
  • ***
  • Posts: 121
  • Karma: +3/-0
  • Crimson Blade
Re: FBA Tips and Tricks
« Reply #69 on: January 12, 2007, 04:20:38 PM »
Code: [Select]
// Hacks for Neo-Geo BIOS
for (int i = 0x10000; i < 0x12000; i+=2) {
if ((*((unsigned short*)(Neo68KBIOS + i + 0)) == 0x4EBA) && (*((unsigned short*)(Neo68KBIOS + i + 4)) == 0x13C0) &&
    (*((unsigned short*)(Neo68KBIOS + i + 6)) == 0x003A) && (*((unsigned short*)(Neo68KBIOS + i + 8)) == 0x001D) &&
    (*((unsigned short*)(Neo68KBIOS + i + 10)) == 0x5206) && (*((unsigned short*)(Neo68KBIOS + i + 12)) == 0x41F9) &&
    (*((unsigned short*)(Neo68KBIOS + i + 14)) == 0x00D0))
{
// Remove memory check for now
*((unsigned short*)(Neo68KBIOS + i + 0x000)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x002)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x016)) = 0x4EF9;
*((unsigned short*)(Neo68KBIOS + i + 0x018)) = 0x00C1;
*((unsigned short*)(Neo68KBIOS + i + 0x01A)) = 0x006A + (i&0xFFFF);

// Patch Calendar errors
*((unsigned short*)(Neo68KBIOS + i + 0x114)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x116)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x11C)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x11E)) = 0x4E71;

// Patch checksum test
*((unsigned short*)(Neo68KBIOS + i + 0x162)) = 0x4E71;
*((unsigned short*)(Neo68KBIOS + i + 0x164)) = 0x4E71;

i = 0x12001;
}
}
Oh, IQ, where exactly would I have to insert those, please? I think those patch that annoying green screen for Neo-Geo games?

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: FBA Tips and Tricks
« Reply #70 on: January 12, 2007, 04:33:12 PM »
Yup, that's exactly what it does.

Right after this:

Code: [Select]
// Load the BIOS ROMs
if (nBIOS >= 0) {
BurnLoadRom(Neo68KBIOS, 0x00080 + nBIOS, 1);
} else {
BurnLoadRom(Neo68KBIOS, 0x00080 +     6, 1);
}


Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: FBA Tips and Tricks
« Reply #71 on: March 01, 2007, 03:26:44 AM »
Lets give a litle life to this thread hehe ^^...

NeoGeo Music Changer Extra Feature

Note: Just changes Music on some NeoGeo games, If somebody manage to get more games to change the music somehow, I will apreciate the help =) , this code works kinda like WinKawaks because it have the same problems with neogeo music.

*When updating with the new code be carefull with the 'After' and 'Before', make sure you put the code where it goes  :wink:

Ok lets start...

First of all, do a backup of this files :

- src/burner/win32/string.rc
- src/burner/win32/resource_string.h
- src/burner/burner.h
- src/burner/win32/run.cpp
- src/burner/win32/scrn.cpp
- src/burn/neogeo/neo_run.cpp
- src/burner/win32/burner_win32.h


Now we can really start! ^^...

In src/burner/win32/string.rc :

Search for...

Code: [Select]
    IDS_FIRSTRUN1 "This appears to be the first time you run %s v%.20s.\n\n"

Add this before...

Code: [Select]
    IDS_SOUND_TRACK_CHANGE "track 0x0%x"

In src/burner/win32/resource_string.h :

Search for...

Code: [Select]
#define IDS_ERR_DISK_TOOOLD (IDS_ERROR  + 154)

Add this after...

Code: [Select]
#define IDS_SOUND_TRACK_CHANGE (IDS_STRING + 170)

In src/burner/burner.h :

Search for...

Code: [Select]
// gami.cpp
extern struct GameInp* GameInp;

add this before...

Code: [Select]
// run.cpp
extern void NeoZ80Cmd(UINT16 sound_code);

In src/burner/win32/run.cpp :

Search for...

Code: [Select]
int bRunPause = 0;
int bAltPause = 0;

Add this before...

Code: [Select]
int nNeoTrack = 0x0720;
int nNeoTrackDef = 0x0720;

Search for...

Code: [Select]
case 'T': {
if (kNetGame && hwndChat == NULL) {
if (AppMessage(&Msg)) {
ActivateChat();
}
}
break;
}

Add this after...

Code: [Select]
    // Next Track
case VK_PRIOR: {

TCHAR buffer[15];
if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_NEOGEO)
{
if (nNeoTrack >= nNeoTrackDef && nNeoTrack <= 0x07FF)
{
nNeoTrack++;
NeoZ80Cmd(nNeoTrack);
_stprintf(buffer, FBALoadStringEx(hAppInst, IDS_SOUND_TRACK_CHANGE, true), nNeoTrack);
VidSNewShortMsg(buffer);
}
else
{
nNeoTrack = nNeoTrackDef;
NeoZ80Cmd(nNeoTrack);
_stprintf(buffer, FBALoadStringEx(hAppInst, IDS_SOUND_TRACK_CHANGE, true), nNeoTrack);
VidSNewShortMsg(buffer);
}
}
break;
}
// Previous Track
case VK_NEXT: {

TCHAR buffer[15];
if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_NEOGEO)
{
if (nNeoTrack >= nNeoTrackDef && nNeoTrack <= 0x07FF)
{
nNeoTrack--;
NeoZ80Cmd(nNeoTrack);
_stprintf(buffer, FBALoadStringEx(hAppInst, IDS_SOUND_TRACK_CHANGE, true), nNeoTrack);
VidSNewShortMsg(buffer);
}
else
{
nNeoTrack = nNeoTrackDef;
NeoZ80Cmd(nNeoTrack);
_stprintf(buffer, FBALoadStringEx(hAppInst, IDS_SOUND_TRACK_CHANGE, true), nNeoTrack);
VidSNewShortMsg(buffer);
}
}
break;
}
// Reset track to 0x0720
case VK_HOME: {

TCHAR buffer[15];
if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_NEOGEO)
{
nNeoTrack = nNeoTrackDef;
NeoZ80Cmd(nNeoTrack);
_stprintf(buffer, FBALoadStringEx(hAppInst, IDS_SOUND_TRACK_CHANGE, true), nNeoTrack);
VidSNewShortMsg(buffer);
}
break;
}

In src/burner/win32/scrn.cpp :

Search for...

Code: [Select]
if (nGame >= 0) {

Add this after...

Code: [Select]
nNeoTrack = 0x0720;

Search for...

Code: [Select]
case MENU_QUIT:

Add this after...

Code: [Select]
nNeoTrack = 0x0720;

In src/burn/neogeo/neo_run.cpp :

Search for...

Code: [Select]
unsigned char NeoReset = 0, NeoSystem = 0;

Add this after...

Code: [Select]
void NeoZ80Cmd(UINT16 sound_code);

Search for...

Code: [Select]
unsigned char __fastcall neogeoReadByte(unsigned int sekAddress)

Add this before...

Code: [Select]
void NeoZ80Cmd(UINT16 sound_code) {
SendSoundCommand(sound_code);
}

In src/burner/win32/burner_win32.h :

Search for...

Code: [Select]
// run.cpp

Add this after...

Code: [Select]
extern int nNeoTrack;
extern int nNeoTrackDef;

Well thats it !! If you want to test something after that, Kof98 is one of the games that works with the music changer code

I hope this code turns out to be useful for some of you ^^

SeeYaa!!
:biggrin:

PS: Well this is all for now lol, have to get a sleep ^^..Take Care all!

Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: FBA Tips and Tricks
« Reply #72 on: March 01, 2007, 03:41:30 AM »
Here is a little pic of the code posted before working =)...

I forgot to mention how to use the feature hehe...

PAGEUP -> Next Track
PAGEDOWN - > Previous Track
HOME -> Reset to 0x0720 Default Track


SeeYaa!
:biggrin:
« Last Edit: March 01, 2007, 03:44:56 AM by CaptainCPS-X »

Offline CaptainCPS

  • FBNeo Dev
  • ******
  • Posts: 1513
  • Karma: +127/-0
  • FB Alpha Team
    • CaptainCPS's Home
Re: FBA Tips and Tricks
« Reply #73 on: March 03, 2007, 12:39:56 AM »
Posting here to let you know I managed to Change CPS-1 Music Tracks too!!  :biggrin: (needs a little adjustments because some sounds keep playing when there are no more music tracks)

Im gonna post the code soon, Im trying to change CPS-2 music tracks too, but QSound seems to be a little more complicated  :p

SeeYaa!!
:biggrin:

Offline iq_132

  • Administrator
  • *****
  • Posts: 3724
  • Karma: +411/-0
  • Definitely not Dink!
    • NeoSource
Re: FBA Tips and Tricks
« Reply #74 on: March 03, 2007, 12:46:56 PM »
Excellent :)  Here's some code to parse Nebula track list files if you're interested.
I haven't tested it since I converted it to work in unicode, but it should work fine.
I'd be sweet to see it display the track title & number while you're playing them :)
« Last Edit: March 03, 2007, 12:47:59 PM by iq_132 »