@@ -454,6 +454,8 @@ var |
| 454 |
begin |
454 |
begin |
| 455 |
Proc.Executable := 'rgbasm'; |
455 |
Proc.Executable := 'rgbasm'; |
| 456 |
Proc.Parameters.Clear; |
456 |
Proc.Parameters.Clear; |
|
|
457 |
Proc.Parameters.Add('-i' + 'render'); |
|
|
458 |
Proc.Parameters.Add('-i' + 'hUGEDriver'); |
| 457 |
Proc.Parameters.Add('-o' + OutFile); |
459 |
Proc.Parameters.Add('-o' + OutFile); |
| 458 |
for Define in Defines do |
460 |
for Define in Defines do |
| 459 |
Proc.Parameters.Add('-D' + Define); |
461 |
Proc.Parameters.Add('-D' + Define); |
@@ -500,17 +502,17 @@ begin |
| 500 |
Song := OptimizeSong(Song); |
502 |
Song := OptimizeSong(Song); |
| 501 |
|
503 |
|
| 502 |
FilePath := Filename; |
504 |
FilePath := Filename; |
| 503 |
Filename := ExtractFileNameWithoutExt(ExtractFileNameOnly(Filename)); |
505 |
Filename := 'render/' + ExtractFileNameWithoutExt(ExtractFileNameOnly(Filename)); |
| 504 |
|
506 |
|
| 505 |
WriteHTT('./hUGEDriver/wave.htt', RenderWaveforms(Song.Waves)); |
507 |
WriteHTT('./render/wave.htt', RenderWaveforms(Song.Waves)); |
| 506 |
WriteHTT('./hUGEDriver/order.htt', RenderOrderTable(Song.OrderMatrix)); |
508 |
WriteHTT('./render/order.htt', RenderOrderTable(Song.OrderMatrix)); |
| 507 |
WriteHTT('./hUGEDriver/duty_instrument.htt', RenderInstruments(Song.Instruments.Duty)); |
509 |
WriteHTT('./render/duty_instrument.htt', RenderInstruments(Song.Instruments.Duty)); |
| 508 |
WriteHTT('./hUGEDriver/wave_instrument.htt', RenderInstruments(Song.Instruments.Wave)); |
510 |
WriteHTT('./render/wave_instrument.htt', RenderInstruments(Song.Instruments.Wave)); |
| 509 |
WriteHTT('./hUGEDriver/noise_instrument.htt', RenderInstruments(Song.Instruments.Noise)); |
511 |
WriteHTT('./render/noise_instrument.htt', RenderInstruments(Song.Instruments.Noise)); |
| 510 |
for I := Low(TRoutineBank) to High(TRoutineBank) do |
512 |
for I := Low(TRoutineBank) to High(TRoutineBank) do |
| 511 |
WriteHTT('./hUGEDriver/routine'+IntToStr(I)+'.htt', Song.Routines[I]); |
513 |
WriteHTT('./render/routine'+IntToStr(I)+'.htt', Song.Routines[I]); |
| 512 |
|
514 |
|
| 513 |
AssignFile(OutFile, './hUGEDriver/pattern.htt'); |
515 |
AssignFile(OutFile, './render/pattern.htt'); |
| 514 |
Rewrite(OutFile); |
516 |
Rewrite(OutFile); |
| 515 |
|
517 |
|
| 516 |
// TODO: Are keys and data defined to be aligned? Seems like they are but |
518 |
// TODO: Are keys and data defined to be aligned? Seems like they are but |
@@ -523,8 +525,6 @@ begin |
| 523 |
CloseFile(OutFile); |
525 |
CloseFile(OutFile); |
| 524 |
|
526 |
|
| 525 |
// Build the file |
527 |
// Build the file |
| 526 |
Chdir('hUGEDriver'); |
|
|
| 527 |
|
|
|
| 528 |
OutSL := TStringList.Create; |
528 |
OutSL := TStringList.Create; |
| 529 |
Proc := TProcess.Create(nil); |
529 |
Proc := TProcess.Create(nil); |
| 530 |
Proc.Options := Proc.Options + [poWaitOnExit, poUsePipes, poStdErrToOutput, poNoConsole]; |
530 |
Proc.Options := Proc.Options + [poWaitOnExit, poUsePipes, poStdErrToOutput, poNoConsole]; |
@@ -532,24 +532,24 @@ begin |
| 532 |
// Assemble |
532 |
// Assemble |
| 533 |
if Mode = emPreview then |
533 |
if Mode = emPreview then |
| 534 |
begin |
534 |
begin |
| 535 |
if Assemble(Filename + '_driver.obj', 'hUGEDriver.asm', ['PREVIEW_MODE']) <> 0 then |
535 |
if Assemble(Filename + '_driver.obj', 'hUGEDriver/hUGEDriver.asm', ['PREVIEW_MODE']) <> 0 then |
| 536 |
goto AssemblyError; |
536 |
goto AssemblyError; |
| 537 |
end |
537 |
end |
| 538 |
else |
538 |
else |
| 539 |
begin |
539 |
begin |
| 540 |
if Assemble(Filename + '_driver.obj', 'hUGEDriver.asm', []) <> 0 then |
540 |
if Assemble(Filename + '_driver.obj', 'hUGEDriver/hUGEDriver.asm', []) <> 0 then |
| 541 |
goto AssemblyError; |
541 |
goto AssemblyError; |
| 542 |
end; |
542 |
end; |
| 543 |
|
543 |
|
| 544 |
if Assemble(Filename + '_song.obj', |
544 |
if Assemble(Filename + '_song.obj', |
| 545 |
'song.asm', |
545 |
'hUGEDriver/song.asm', |
| 546 |
['SONG_DESCRIPTOR=song', 'TICKS='+IntToStr(Song.TicksPerRow)]) <> 0 then |
546 |
['SONG_DESCRIPTOR=song', 'TICKS='+IntToStr(Song.TicksPerRow)]) <> 0 then |
| 547 |
goto AssemblyError; |
547 |
goto AssemblyError; |
| 548 |
|
548 |
|
| 549 |
if Mode = emGBS then |
549 |
if Mode = emGBS then |
| 550 |
begin |
550 |
begin |
| 551 |
if Assemble( |
551 |
if Assemble( |
| 552 |
Filename + '_gbs.obj', 'gbs.asm', |
552 |
Filename + '_gbs.obj', 'hUGEDriver/gbs.asm', |
| 553 |
['SONG_DESCRIPTOR=song', |
553 |
['SONG_DESCRIPTOR=song', |
| 554 |
'GBS_TITLE='+PadRight(Song.Name, 32), |
554 |
'GBS_TITLE='+PadRight(Song.Name, 32), |
| 555 |
'GBS_AUTHOR='+PadRight(Song.Artist, 32), |
555 |
'GBS_AUTHOR='+PadRight(Song.Artist, 32), |
@@ -558,23 +558,26 @@ begin |
| 558 |
end |
558 |
end |
| 559 |
else |
559 |
else |
| 560 |
begin |
560 |
begin |
| 561 |
if Assemble(Filename + '_player.obj', 'player.asm', ['SONG_DESCRIPTOR=song']) <> 0 then |
561 |
if Assemble(Filename + '_player.obj', 'hUGEDriver/player.asm', ['SONG_DESCRIPTOR=song']) <> 0 then |
| 562 |
goto AssemblyError; |
562 |
goto AssemblyError; |
| 563 |
end; |
563 |
end; |
| 564 |
|
564 |
|
| 565 |
// Link |
565 |
// Link |
| 566 |
if Mode = emGBS then |
566 |
if Mode = emGBS then |
| 567 |
begin |
567 |
begin |
| 568 |
if Link(Filename + '.gbs', [Filename + '_driver.obj', Filename + |
568 |
if Link(Filename + '.gbs', |
| 569 |
'_song.obj', Filename + '_gbs.obj']) <> 0 then |
569 |
[Filename + '_driver.obj', |
| 570 |
goto AssemblyError; |
570 |
Filename + '_song.obj', |
|
|
571 |
Filename + '_gbs.obj']) <> 0 then goto AssemblyError; |
| 571 |
end |
572 |
end |
| 572 |
else |
573 |
else |
| 573 |
begin |
574 |
begin |
| 574 |
if Link(Filename + '.gb', [Filename + '_driver.obj', Filename + |
575 |
if Link(Filename + '.gb', |
| 575 |
'_song.obj', Filename + '_player.obj'], Filename + '.map', Filename + |
576 |
[Filename + '_driver.obj', |
| 576 |
'.sym') <> 0 then |
577 |
Filename + '_song.obj', |
| 577 |
goto AssemblyError; |
578 |
Filename + '_player.obj'], |
|
|
579 |
Filename + '.map', |
|
|
580 |
Filename + '.sym') <> 0 then goto AssemblyError; |
| 578 |
end; |
581 |
end; |
| 579 |
|
582 |
|
| 580 |
// Fix |
583 |
// Fix |
@@ -661,7 +664,6 @@ begin |
| 661 |
// as its argument. |
664 |
// as its argument. |
| 662 |
Proc.Free; |
665 |
Proc.Free; |
| 663 |
OutSL.Free; |
666 |
OutSL.Free; |
| 664 |
Chdir('..'); |
|
|
| 665 |
end; |
667 |
end; |
| 666 |
|
668 |
|
| 667 |
end. |
669 |
end. |