Merge pull request #37 from GabrielRavier/feature/improveOToR
Improve O to R
This commit is contained in:
commit
f9b498c51c
4 changed files with 169 additions and 140 deletions
|
@ -80,7 +80,7 @@ void OrganyaReleaseNote()
|
|||
#ifdef FIX_BUGS
|
||||
delete[] info.tdata[i].note_p;
|
||||
#else
|
||||
delete info.tdata[i].note_p; // should be delete[]
|
||||
delete info.tdata[i].note_p; // Should be delete[]
|
||||
#endif
|
||||
info.tdata[i].note_p = NULL;
|
||||
}
|
||||
|
@ -88,13 +88,15 @@ void OrganyaReleaseNote()
|
|||
}
|
||||
|
||||
// Wave playing and loading
|
||||
typedef struct {
|
||||
typedef struct
|
||||
{
|
||||
short wave_size;
|
||||
short oct_par;
|
||||
short oct_size;
|
||||
} OCTWAVE;
|
||||
|
||||
OCTWAVE oct_wave[8] = {
|
||||
OCTWAVE oct_wave[8] =
|
||||
{
|
||||
{ 256, 1, 4 }, // 0 Oct
|
||||
{ 256, 2, 8 }, // 1 Oct
|
||||
{ 128, 4, 12 }, // 2 Oct
|
||||
|
@ -154,8 +156,10 @@ short freq_tbl[12] = { 262,277,294,311,330,349,370,392,415,440,466,494 };
|
|||
|
||||
void ChangeOrganFrequency(unsigned char key, signed char track, long a)
|
||||
{
|
||||
for (int j = 0; j < 8; j++) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
for (int j = 0; j < 8; j++)
|
||||
{
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
lpORGANBUFFER[track][j][i]->SetFrequency(((oct_wave[j].wave_size * freq_tbl[key]) * oct_wave[j].oct_par) / 8 + (a - 1000));
|
||||
}
|
||||
}
|
||||
|
@ -305,14 +309,17 @@ void PlayDramObject(unsigned char key, int mode, signed char track)
|
|||
lpDRAMBUFFER[track]->Stop();
|
||||
lpDRAMBUFFER[track]->SetCurrentPosition(0);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
lpDRAMBUFFER[track]->Stop();
|
||||
lpDRAMBUFFER[track]->SetCurrentPosition(0);
|
||||
ChangeDramFrequency(key, track);
|
||||
lpDRAMBUFFER[track]->Play(false);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
break;
|
||||
|
||||
case -1:
|
||||
break;
|
||||
}
|
||||
|
@ -429,9 +436,14 @@ void LoadOrganya(const char *name)
|
|||
memcpy(pass_check, p, 6);
|
||||
p += 6;
|
||||
|
||||
if (!memcmp(pass_check, "Org-01", 6))ver = 1;
|
||||
if (!memcmp(pass_check, "Org-02", 6))ver = 2;
|
||||
//if (!memcmp(pass_check, "Org-03", 6))ver = 2;
|
||||
if (!memcmp(pass_check, "Org-01", 6))
|
||||
ver = 1;
|
||||
|
||||
if (!memcmp(pass_check, "Org-02", 6))
|
||||
ver = 2;
|
||||
|
||||
// if (!memcmp(pass_check, "Org-03", 6))
|
||||
// ver = 2;
|
||||
|
||||
if (!ver)
|
||||
{
|
||||
|
@ -446,7 +458,8 @@ void LoadOrganya(const char *name)
|
|||
info.repeat_x = READ_LE32(p);
|
||||
info.end_x = READ_LE32(p);
|
||||
|
||||
for (int i = 0; i < 16; i++) {
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
info.tdata[i].freq = READ_LE16(p);
|
||||
info.tdata[i].wave_no = *p++;
|
||||
const signed char pipi = *p++;
|
||||
|
@ -457,9 +470,11 @@ void LoadOrganya(const char *name)
|
|||
// Load notes
|
||||
NOTELIST *np;
|
||||
|
||||
for (int j = 0; j < 16; j++) {
|
||||
for (int j = 0; j < 16; j++)
|
||||
{
|
||||
// The first note from is NULL
|
||||
if (info.tdata[j].note_num == 0) {
|
||||
if (info.tdata[j].note_num == 0)
|
||||
{
|
||||
info.tdata[j].note_list = NULL;
|
||||
continue;
|
||||
}
|
||||
|
@ -471,7 +486,8 @@ void LoadOrganya(const char *name)
|
|||
np->to = (np + 1);
|
||||
np++;
|
||||
|
||||
for (int i = 1; i < info.tdata[j].note_num; i++) {
|
||||
for (int i = 1; i < info.tdata[j].note_num; i++)
|
||||
{
|
||||
np->from = (np - 1);
|
||||
np->to = (np + 1);
|
||||
np++;
|
||||
|
@ -483,31 +499,36 @@ void LoadOrganya(const char *name)
|
|||
|
||||
// Set note properties
|
||||
np = info.tdata[j].note_p; // X position
|
||||
for (int i = 0; i < info.tdata[j].note_num; i++) {
|
||||
for (int i = 0; i < info.tdata[j].note_num; i++)
|
||||
{
|
||||
np->x = READ_LE32(p);
|
||||
np++;
|
||||
}
|
||||
|
||||
np = info.tdata[j].note_p; // Y position
|
||||
for (int i = 0; i < info.tdata[j].note_num; i++) {
|
||||
for (int i = 0; i < info.tdata[j].note_num; i++)
|
||||
{
|
||||
np->y = *p++;
|
||||
np++;
|
||||
}
|
||||
|
||||
np = info.tdata[j].note_p; // Length
|
||||
for (int i = 0; i < info.tdata[j].note_num; i++) {
|
||||
for (int i = 0; i < info.tdata[j].note_num; i++)
|
||||
{
|
||||
np->length = *p++;
|
||||
np++;
|
||||
}
|
||||
|
||||
np = info.tdata[j].note_p; // Volume
|
||||
for (int i = 0; i < info.tdata[j].note_num; i++) {
|
||||
for (int i = 0; i < info.tdata[j].note_num; i++)
|
||||
{
|
||||
np->volume = *p++;
|
||||
np++;
|
||||
}
|
||||
|
||||
np = info.tdata[j].note_p; // Pan
|
||||
for (int i = 0; i < info.tdata[j].note_num; i++) {
|
||||
for (int i = 0; i < info.tdata[j].note_num; i++)
|
||||
{
|
||||
np->pan = *p++;
|
||||
np++;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
#include "WindowsWrapper.h"
|
||||
|
||||
//Below are Organya song data structures
|
||||
struct NOTELIST {
|
||||
struct NOTELIST
|
||||
{
|
||||
NOTELIST *from; //Previous address
|
||||
NOTELIST *to; //Next address
|
||||
|
||||
|
@ -15,7 +16,8 @@ struct NOTELIST {
|
|||
};
|
||||
|
||||
//Track data * 8
|
||||
struct TRACKDATA {
|
||||
struct TRACKDATA
|
||||
{
|
||||
unsigned short freq; //Frequency (1000 is default)
|
||||
unsigned char wave_no; //Waveform No.
|
||||
signed char pipi;
|
||||
|
@ -26,7 +28,8 @@ struct TRACKDATA {
|
|||
};
|
||||
|
||||
//Unique information held in songs
|
||||
struct MUSICINFO {
|
||||
struct MUSICINFO
|
||||
{
|
||||
unsigned short wait;
|
||||
BOOL loaded;
|
||||
BOOL playing;
|
||||
|
|
|
@ -255,13 +255,18 @@ BOOL InitializeGame()
|
|||
if (!TransferStage(13, 200, 10, 8))
|
||||
{
|
||||
// TODO - restore this when ghWnd is available
|
||||
/*#if defined(NONPORTABLE) && defined(WINDOWS)
|
||||
|
||||
/*
|
||||
|
||||
#if defined(NONPORTABLE) && defined(WINDOWS)
|
||||
#ifdef JAPANESE
|
||||
MessageBoxA(ghWnd, "ステージの読み込みに失敗", "エラー", MB_OK);
|
||||
#else
|
||||
MessageBoxA(ghWnd, "Failed to load stage", "Error", MB_OK);
|
||||
#endif
|
||||
#else*/
|
||||
#else
|
||||
|
||||
*/
|
||||
#ifdef JAPANESE
|
||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "エラー", "ステージの読み込みに失敗", NULL);
|
||||
#else
|
||||
|
|
Loading…
Add table
Reference in a new issue