From a5f4eeac250e8fd7257048fd86da9ec9c045c9cf Mon Sep 17 00:00:00 2001 From: Nicolaas Groeneboom Date: Mon, 19 Feb 2024 11:07:43 +0100 Subject: [PATCH] Added agon disk anim --- .../tutorials/AGON/tutorials/05_bitmap.ras | 0 .../tutorials/AGON/tutorials/06_disk_anim.ras | 69 +++++++ .../AGON/tutorials/agon_tutorials.trse | 2 +- .../tutorials/AGON/tutorials/fjong/disk.fjo | 173 ++++++++++++++++++ .../tutorials/resources/images/levels.flf | Bin 16761 -> 16761 bytes source/Compiler/assembler/asm6809.cpp | 5 - source/LeLib/limage/compression.cpp | 19 ++ source/LeLib/limage/compression.h | 1 + source/LeLib/limage/limageagon.cpp | 24 +++ source/LeLib/limage/limageagon.h | 1 + source/LeLib/limage/limagegeneric.cpp | 19 -- source/LeLib/limage/limagegeneric.h | 2 +- source/dialogeffects.cpp | 11 ++ units/AGON/system/screen.tru | 6 + 14 files changed, 306 insertions(+), 26 deletions(-) mode change 100755 => 100644 Publish/tutorials/AGON/tutorials/05_bitmap.ras create mode 100755 Publish/tutorials/AGON/tutorials/06_disk_anim.ras create mode 100644 Publish/tutorials/AGON/tutorials/fjong/disk.fjo diff --git a/Publish/tutorials/AGON/tutorials/05_bitmap.ras b/Publish/tutorials/AGON/tutorials/05_bitmap.ras old mode 100755 new mode 100644 diff --git a/Publish/tutorials/AGON/tutorials/06_disk_anim.ras b/Publish/tutorials/AGON/tutorials/06_disk_anim.ras new file mode 100755 index 000000000..18c948a6b --- /dev/null +++ b/Publish/tutorials/AGON/tutorials/06_disk_anim.ras @@ -0,0 +1,69 @@ +program Bitmap_image; + + +@requirefile "data/disksprite1.bin" "Please run (ctrl+R) the fjong/disk.fjo file before compiling this program" + +@use "system/screen" + + +@macro "include_images" 1 + + i = 1; + for (i=1;iu_Rf})HdAczcr z{K|n4cPzw{2Ak=d}Ux+|FGdYk^2I@L?2LTp@$sj9GO;>>N;kKYNz#%hvEfddV zUS{pd0?ZmXu;gYz6Ca*UEDcPXH?S?#oE+M delta 70 zcmey_#Q3v`al&&(wuvv|Cz~@0Otxkb+x(H;fpPK%HlEEpnfMqdFJM;NENJ4xvx%dD WY4d)md8$xG8|&m)hx?No7;OQlfEl^~ diff --git a/source/Compiler/assembler/asm6809.cpp b/source/Compiler/assembler/asm6809.cpp index 3144717a1..8811b63b8 100644 --- a/source/Compiler/assembler/asm6809.cpp +++ b/source/Compiler/assembler/asm6809.cpp @@ -394,13 +394,8 @@ QString Asm6809::String(QStringList lst, bool term) mark = "fcc"; for (QString s:lst) { -// for (QString s:lst) res+=DeclareSingleString(s,mark,byte); -/* if (s!=lst.last()) - res=res + "\n"; -*/ - } if (term) res=res + "\t"+byte+"\t0"; diff --git a/source/LeLib/limage/compression.cpp b/source/LeLib/limage/compression.cpp index 9b81cb98f..beaae8200 100644 --- a/source/LeLib/limage/compression.cpp +++ b/source/LeLib/limage/compression.cpp @@ -99,6 +99,25 @@ void Compression::AddToDataX(QByteArray &data, MultiColorImage& img, int xp, int } +void Compression::AddToRGBAData(QByteArray &data, QImage& img, int xp, int yp, int w, int h) +{ + for (int y=0;y>16)&255); + data.append((val>>8)&255); + data.append(val&255); + if ((val&255)==0) + data.append((uchar)0); + else + data.append((uchar)255); + } + +} + void Compression::AddToVZ200Data(QByteArray &data, LImage &img, int xp, int yp, int w, int h) { for (int y=0;y& screen, QByteArray& charset, QVector &sOut, QByteArray& cOut, int sw, int sh, int charSize, int noTargetChar,int bmask); diff --git a/source/LeLib/limage/limageagon.cpp b/source/LeLib/limage/limageagon.cpp index 0b3fe508f..097e20375 100644 --- a/source/LeLib/limage/limageagon.cpp +++ b/source/LeLib/limage/limageagon.cpp @@ -47,3 +47,27 @@ void LImageAgon::SaveBin(QFile &file) } + +void LImageAgon::ExportBin(QFile &file) +{ + ushort width = m_width; + ushort height = m_height; + ushort tmp = 0; + tmp=23; file.write((char*)&tmp, 1); + tmp=0; file.write((char*)&tmp, 1); + tmp=192; file.write((char*)&tmp, 1); + tmp=0; file.write((char*)&tmp, 1); + + tmp=23; file.write((char*)&tmp, 1); + tmp=27; file.write((char*)&tmp, 1); + tmp=0; file.write((char*)&tmp, 1); + tmp=0; file.write((char*)&tmp, 1); // id + + tmp=23; file.write((char*)&tmp, 1); // id + tmp=27; file.write((char*)&tmp, 1); // id + tmp=1; file.write((char*)&tmp, 1); // id + + file.write((char*)&width, 2); + file.write((char*)&height, 2); + LImageQImage::SaveBinRGBA(file); +} diff --git a/source/LeLib/limage/limageagon.h b/source/LeLib/limage/limageagon.h index ee3e8064d..08b090c1b 100644 --- a/source/LeLib/limage/limageagon.h +++ b/source/LeLib/limage/limageagon.h @@ -13,6 +13,7 @@ class LImageAgon : public LImageGeneric void SaveBin(QFile& file) override; QString getMetaInfo() override; + void ExportBin(QFile &file) override; private: }; diff --git a/source/LeLib/limage/limagegeneric.cpp b/source/LeLib/limage/limagegeneric.cpp index 42233eafe..7d9438b18 100644 --- a/source/LeLib/limage/limagegeneric.cpp +++ b/source/LeLib/limage/limagegeneric.cpp @@ -48,25 +48,6 @@ QString LImageGeneric::getMetaInfo() void LImageGeneric::ExportBin(QFile &file) { - ushort width = m_width; - ushort height = m_height; - ushort tmp = 0; - tmp=23; file.write((char*)&tmp, 1); - tmp=0; file.write((char*)&tmp, 1); - tmp=192; file.write((char*)&tmp, 1); - tmp=0; file.write((char*)&tmp, 1); - - tmp=23; file.write((char*)&tmp, 1); - tmp=27; file.write((char*)&tmp, 1); - tmp=0; file.write((char*)&tmp, 1); - tmp=0; file.write((char*)&tmp, 1); // id - - tmp=23; file.write((char*)&tmp, 1); // id - tmp=27; file.write((char*)&tmp, 1); // id - tmp=1; file.write((char*)&tmp, 1); // id - - file.write((char*)&width, 2); - file.write((char*)&height, 2); LImageQImage::SaveBinRGBA(file); } diff --git a/source/LeLib/limage/limagegeneric.h b/source/LeLib/limage/limagegeneric.h index 0e166b36d..3308e67cf 100644 --- a/source/LeLib/limage/limagegeneric.h +++ b/source/LeLib/limage/limagegeneric.h @@ -14,7 +14,7 @@ class LImageGeneric : public LImageQImage virtual QString getMetaInfo() override; - void ExportBin(QFile &file) override; + virtual void ExportBin(QFile &file) override; private: }; diff --git a/source/dialogeffects.cpp b/source/dialogeffects.cpp index 2fe83098f..c0a1b8e04 100644 --- a/source/dialogeffects.cpp +++ b/source/dialogeffects.cpp @@ -934,6 +934,16 @@ static int AddToData(lua_State* L) { return 0; } +static int AddRGBAToData(lua_State* L) { + if (!VerifyFjongParameters(L,"AddRGBAToData")) + return 0; + + if (m_effect!=nullptr) + m_compression.AddToRGBAData(m_charData, m_effect->m_img ,lua_tonumber(L,1),lua_tonumber(L,2), lua_tonumber(L,3), lua_tonumber(L,4)); + + return 0; +} + static int AddVZ200Data(lua_State* L) { if (!VerifyFjongParameters(L,"AddVZ200ToData")) return 0; @@ -1984,6 +1994,7 @@ void DialogEffects::LoadScript(QString file) // Data registration lua_register(m_script->L, "AddC64LineToData", AddToData); + lua_register(m_script->L, "AddRGBALineToData", AddRGBAToData); lua_register(m_script->L, "AddVZ200ToData", AddVZ200Data); lua_register(m_script->L, "Add4PixelToData", Add4PixelData); lua_register(m_script->L, "Add4PixelCGAToData", Add4PixelCGAData); diff --git a/units/AGON/system/screen.tru b/units/AGON/system/screen.tru index 5afc3654d..2b3818641 100644 --- a/units/AGON/system/screen.tru +++ b/units/AGON/system/screen.tru @@ -203,4 +203,10 @@ begin end; + +procedure ClearScreen(); +begin + Screen::PrintString(string(12)); +end; + end.