Minor tweak to throw exceptions instead of returning silently. Add gitea workflow.
This commit is contained in:
parent
1f20f0c837
commit
98dcfccc9d
25
.gitea/workflows/emscripten_autobuild.yaml
Normal file
25
.gitea/workflows/emscripten_autobuild.yaml
Normal file
@ -0,0 +1,25 @@
|
||||
name: Emscripten Build
|
||||
run-name: Emscripten build initiated by ${{ gitea.actor }} for ${{ gitea.repository }}
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
Build_and_Deploy_Web_Build:
|
||||
runs-on: emscripten
|
||||
container:
|
||||
volumes:
|
||||
- /home/sigonasr2/divar/server/files/web:/web
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v4
|
||||
- name: Generate emcmake configuration
|
||||
run: |
|
||||
emcmake cmake . -B ${{ gitea.event.repository.name }}
|
||||
- name: Build Project
|
||||
run: cmake --build ${{ gitea.event.repository.name }}/
|
||||
- name: Move Files and Finalize
|
||||
run: |
|
||||
mkdir -p /web/${{ gitea.event.repository.name }}
|
||||
mv ${{ gitea.event.repository.name }}/bin/* /web/${{ gitea.event.repository.name }}
|
||||
echo "Move files to final directory (/web/${{ gitea.event.repository.name }})"
|
||||
- name: Cleanup - Web Build Available
|
||||
run: echo "Emscripten build now available at http://projectdivar.com/files/web/${{ gitea.event.repository.name }}"
|
@ -48,7 +48,7 @@ struct Rom{
|
||||
addr=ptr=loc;
|
||||
}
|
||||
uint_fast8_t readInt8(){
|
||||
return data[ptr++];
|
||||
return data[ptr++];
|
||||
}
|
||||
uint_fast16_t readShort(){
|
||||
return readInt8()|(readInt8()<<8);
|
||||
@ -128,7 +128,7 @@ struct Rom{
|
||||
int tmp;
|
||||
int read{};
|
||||
while(data[pos]!=0xFF){
|
||||
if (pos >= data.length())return;
|
||||
if (pos >= data.length())throw std::exception{"Computed and actual decompressed sizes do not match."};
|
||||
int commandType{data[pos]>>5};
|
||||
int len{(data[pos]&0x1F)+1};
|
||||
if(commandType==7){
|
||||
@ -136,11 +136,11 @@ struct Rom{
|
||||
len=((int(data[pos])&3)<<8)+int(data[pos+1])+1;
|
||||
++pos;
|
||||
}
|
||||
if(bpos+len>maxLength||bpos+len<0)return;
|
||||
if(bpos+len>maxLength||bpos+len<0)throw std::exception{"Computed and actual decompressed sizes do not match."};
|
||||
++pos;
|
||||
if(commandType>=4) {
|
||||
bpos2=(int(data[pos])<<8)+data[pos+1];
|
||||
if(bpos2>=maxLength||bpos2<0)return;
|
||||
if(bpos2>=maxLength||bpos2<0)throw std::exception{"Computed and actual decompressed sizes do not match."};
|
||||
pos+=2;
|
||||
}
|
||||
switch(commandType) {
|
||||
@ -152,7 +152,7 @@ struct Rom{
|
||||
++pos;
|
||||
}break;
|
||||
case RUN_LENGTH_ENCODED_SHORT:{
|
||||
if(bpos+2*len>maxLength||bpos<0)return;
|
||||
if(bpos+2*len>maxLength||bpos<0)throw std::exception{"Computed and actual decompressed sizes do not match."};
|
||||
while(len--!=0){
|
||||
block[bpos++]=data[pos];
|
||||
block[bpos++]=data[pos+1];
|
||||
@ -164,19 +164,19 @@ struct Rom{
|
||||
while(len--!=0)block[bpos++]=tmp++;
|
||||
}break;
|
||||
case REPEAT_PREVIOUS_DATA:{
|
||||
if(bpos2+len>maxLength||bpos2<0)return;
|
||||
if(bpos2+len>maxLength||bpos2<0)throw std::exception{"Computed and actual decompressed sizes do not match."};
|
||||
for(int i:std::views::iota(0,len))block[bpos++]=block[bpos2+i];
|
||||
}break;
|
||||
case REVERSE_BITS:{
|
||||
if(bpos2+len>maxLength||bpos2<0)return;
|
||||
if(bpos2+len>maxLength||bpos2<0)throw std::exception{"Computed and actual decompressed sizes do not match."};
|
||||
while(len--!=0)block[bpos++]=Rom::reversedBytes[block[bpos2++]&0xFF];
|
||||
}break;
|
||||
case UNKNOWN_1:{
|
||||
if(bpos2-len+1<0)return;
|
||||
if(bpos2-len+1<0)throw std::exception{"Computed and actual decompressed sizes do not match."};
|
||||
while(len--!=0)block[bpos++]=block[bpos2--];
|
||||
}break;
|
||||
case UNKNOWN_2:{
|
||||
return;
|
||||
throw std::exception{"Computed and actual decompressed sizes do not match."};;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
@ -211,7 +211,7 @@ struct Rom{
|
||||
};
|
||||
uint_fast32_t GetAnimation(){
|
||||
return (data[13]<<24)+(data[14]<<16)+(data[15]<<8)+data[16];
|
||||
}
|
||||
};
|
||||
};
|
||||
struct BackgroundPalette{
|
||||
std::vector<Pixel>colors;
|
||||
@ -475,7 +475,7 @@ struct Rom{
|
||||
if(effectVal==0)effectVal=(((background.GetAnimation()>>24)&0xFF));
|
||||
distorter.effect=std::make_unique<DistortionEffect>(data,effectVal);
|
||||
}
|
||||
};
|
||||
};
|
||||
std::u8string data;
|
||||
inline static std::string reversedBytes;
|
||||
std::vector<BattleBackground>backgrounds;
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user