mirror of
https://github.com/WerWolv/ImHex-Patterns.git
synced 2026-03-27 23:37:04 -05:00
pattern: Atari 8-bit binary format (XEX) (#453)
* add atari XEX format * Update README.md --------- Co-authored-by: Nik <werwolv98@gmail.com>
This commit is contained in:
@@ -224,6 +224,7 @@ Everything will immediately show up in ImHex's Content Store and gets bundled wi
|
||||
| ZSTD | `application/zstd` | [`patterns/zstd.hexpat`](patterns/zstd.hexpat) | Zstandard compressed data format |
|
||||
| MOD | `3d-model/mod` | [`patterns/DMC3HD-Mod.hexpat`](patterns/dmc3_hd_mod.hexpat) | 3D Model files used in Devil May Cry 3 HD Collection |
|
||||
| CBM BASIC | | [`commodore_basic.hexpat`](patterns/commodore_basic.hexpat) | Commodore BASIC |
|
||||
| Atari XEX | | [`xex.hexpat`](patterns/xex.hexpat) | Atari 8-bit binary format |
|
||||
| Terminfo | `application/x-terminfo` and `application/x-terminfo2` | [`patterns/terminfo.hexpat`](patterns/terminfo.hexpat) | Compiled *(legacy and extended)* term info entry |
|
||||
|
||||
### Scripts
|
||||
|
||||
34
patterns/xex.hexpat
Normal file
34
patterns/xex.hexpat
Normal file
@@ -0,0 +1,34 @@
|
||||
#pragma author Adiee5
|
||||
#pragma description Atari 8-bit binary format (.xex)
|
||||
#pragma endian little
|
||||
#pragma magic [ FF FF ] @ 0
|
||||
|
||||
import std.mem;
|
||||
import std.io;
|
||||
|
||||
u16 header @ 0;
|
||||
|
||||
if (header != 0xFFFF)
|
||||
std::error("Not a valid XEX file");
|
||||
|
||||
fn hex_dec_addr(u16 num){
|
||||
return std::format("0x{:04X} ({})", num, num);
|
||||
};
|
||||
|
||||
struct block {
|
||||
u16 start [[comment("Address of the first byte"), format("hex_dec_addr")]];
|
||||
if (start == 0xFFFF) continue; //an unnecessary header to be ignored
|
||||
u16 end [[comment("Address of the last byte"), format("hex_dec_addr")]];
|
||||
|
||||
// since 1 and 2 byte blocks sometimes have special meanings,
|
||||
// we make them regural variables instead of byte arrays,
|
||||
// so that reading their values from the GUI is easier
|
||||
match (end-start){
|
||||
(0): u8 data;
|
||||
(1): u16 data [[format("hex_dec_addr")]];
|
||||
(_): u8 data[end-start+1];
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
block data_blocks[while(!std::mem::eof())] @ 2 [[name("Data Blocks")]];
|
||||
BIN
tests/patterns/test_data/xex.hexpat.xex
Normal file
BIN
tests/patterns/test_data/xex.hexpat.xex
Normal file
Binary file not shown.
Reference in New Issue
Block a user