From f71c8602e02a49b98421c851bb211bab19c467fd Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Wed, 24 Apr 2019 13:46:19 -0400 Subject: [PATCH] added //#resource "file.bin" --- .gitattributes | 6 ++++++ doc/notes.txt | 1 + presets/nes/climbr_title.nam.rle | Bin 0 -> 569 bytes presets/nes/climbr_title.pal | 1 + presets/nes/jroatch.chr.lz4 | Bin 0 -> 3075 bytes src/platform/nes.ts | 1 - src/project.ts | 35 ++++++++++++++++++------------- src/util.ts | 6 ++++-- src/views.ts | 9 +++++++- 9 files changed, 41 insertions(+), 18 deletions(-) create mode 100644 .gitattributes create mode 100644 presets/nes/climbr_title.nam.rle create mode 100644 presets/nes/climbr_title.pal create mode 100644 presets/nes/jroatch.chr.lz4 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..09058da5 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ +*.pal binary +*.chr binary +*.rle binary +*.lz4 binary +*.bin binary +*.nam binary diff --git a/doc/notes.txt b/doc/notes.txt index 50a154f0..ad8c3ff6 100644 --- a/doc/notes.txt +++ b/doc/notes.txt @@ -102,6 +102,7 @@ TODO: - throw errors when bad/no refs - per-View keyboard shortcuts - parse labels + - parse .incbin directives? - crt0.s compiled each time? - debug highlight doesn't go away when debugging -> running - show breakpoint of PC or highest address on stack diff --git a/presets/nes/climbr_title.nam.rle b/presets/nes/climbr_title.nam.rle new file mode 100644 index 0000000000000000000000000000000000000000..f2444bca73dace5a459073290589a49a865a13e0 GIT binary patch literal 569 zcmaKpO-{ow5QX2^`5|S4V8f!NQBT1(NEILit&&ungtcecojF3;=L8_ZDYyqm;Efv= zNKiQ*PyEe$9@zppQE^ZXnJYutJmB)`wtrl;ciqiujqB!q32{WT5E!S?Vxe*jsWdXL z0(H)P)Yz{nlhUb$ru-SIisp*$4NY(1 zsfFZ;diJZR5KMfatf>3I)POqBHdRCugMH}KH?^zyP>qZa5mF-&P^Cl@w0>z+OzYY^ z7c^-*dGWp1_uTXMch0pmyjwq5c_;1$3@}J*b9&s3?g8AJKlVofk_kaUL4d47szAIC z9pBE^V0iN-+8_I${jvYsA95pxxZpaY`}Xb|b&%!Jks|YiLGo@Rn-f_&`}Cq zcCBW^;S0yn`9iZb=uVjDx#MVdkX_Ym@Kqium7GSNH=L4g`I&F&u${p?A9QR>mor(nJVvn@B^PXlY0I);ffi0# zxOd&Ub!D`-aSuZWSQpSAAbXzchM`_`*E#*<2qwe84JUwuV_JC^8D<9o9dKcdS^LMf zz_RK-y@hF3_8=ZmNHbZWkY1wk=66>Y8QFvUZ8AaVR}RHU)#!5$QIm zBgy2P%gwcGvhCN%ogUZ10oj&`*TwQGMN#NnAj>j{i*q_b&2Pw-z%)E!)3j#cuf(MU zwHk5BO?3Ez;A6bzkc_in=P=HLYJG_wI|iLPzz3_~&_tCEPEFO(SFPiC z6!DNnQ5dn$LUa<5K(|0-q0LA%S3#odqylw@ktp&R+EPf>L$tWK_(e81ck$vyOnoZ0 zNp5vA3`qqyb!w`GaWbsxEZ~KZ?BG63W1KWZo{8a_YvMSG=dT;J3Wh?jf=7I(P<3W7 zTq@0AM8_1@=~fxo0-cOpw={uqN5|sguch{?@Z!a}xw))HifM~fk}}1||h3(V;>{w(bCb@Pr zYSS22lxg(J74+6k^!Y9H1}!Q=-9k1Cm0%>m5a#E9p$ zXtEE-48vI9v<=cHkoMykFQd*RNuETH$S{w zh9Nb<))YmFNn`9mZXvCIf)ScT7!kRcd+Dx-Fw8Oy{a8d{6}kj;(3N-xD>s`4#4+?! zAHrDIs3=>lE_BJ%y}L$RmMnJhTeH}Yr!|clcE!g*L6D?kaU%{ko0W=bE_c2N6pNB1 z2u(c41gWT*m1#WJte6@_(ZsQ%qh(z$j~?BF<+aY}QKC^t2I+%D5Y*g_8#io(b9Nuh za!3dr)g|iXIbF)HcD+!>K9mW!MVxSUZ^y=R`4Gg02k7>> zgGNpRadNhQdb(JOlQezei6mWaf2JDSdazni$XZ3kLL4XaFX3hOmRWDmuHp5G1joC7 zKqa{lCkriJBm^0!gnUz!=gVK^$kJI{`)GCk_1AfR>Qt^i^NbqbxDn_1r?a^JdxSyw zY_JC%KY!Tx-2;Ef^DNKkcN(haMZ5)ByMK8mZ=NBv(kjB4GkkR>N1Ub^vMiSW{Qd_y z`{3W7^Hqkw{OwIzeUM{#m$B9R=>U7mGw)gNf00L9J!Ahco;FvnH>Y;6=7r^SKE3$~ zUYwU^%7y##Y(7nIUTEGW&6v_9$|;rXU7I|QS1##|47HPB33xQgSex0q=2upz2RwU| zXlZu(PN9Eg6_&?D)jE9ma9vcrJiUE8KYZBxXtOLLz1{Xy5onqp9=iYj`=3WEK07}@ z|HjRm%m1_&nsCxIrpRGt=G@G=b2Bqk8TmDO&@0(>kKDT1)mF2tyZcu6ty|sQ)WEVE z^f+?;dX;~Q(5F=Jde?yg)#$Z~$2yn0SF4?!s$ukrilWk3l0nJ)Fo`Rb_l2}$dS;>3 zTA=^dLY+pFa#ye5HZu(Rm&gK3n zqS?t)=W-6WM&wtJ3587I*vir*Sz21k7<|xJOn#-tbuaQK4oyzdm$x@^&-(RrjYL7{ zVaW6BwHz>Mri2eo(Dz`HzVhCQ6CtI}4O1LT)6yqR+K(ciZW%gHK{wa0KQ!S_g^q!H pMm%Q?0fur*y06lC@?1J`;-OHv8afHydnI*#+oFA { // set 'link' property on files that are link dependencies (must match filename) - if (result) - for (var dep of result) + if (result) { + for (let dep of result) { dep.link = linkfiles.indexOf(dep.path) >= 0; + } + } callback(err, result); }); } diff --git a/src/util.ts b/src/util.ts index 4dbea967..a7a3a8c2 100644 --- a/src/util.ts +++ b/src/util.ts @@ -320,8 +320,10 @@ export function isProbablyBinary(path:string, data?:number[] | Uint8Array) : boo // check extensions if (path) { path = path.toUpperCase(); - if (path.endsWith('.CHR') || path.endsWith('.BIN')) - score++; + const BINEXTS = ['.CHR','.BIN','.PAL','.NAM','.RLE','.LZ4']; + for (var ext of BINEXTS) { + if (path.endsWith(ext)) score++; + } } // decode as UTF-8 for (var i = 0; i < (data?data.length:0);) { diff --git a/src/views.ts b/src/views.ts index 2b3f8e12..e2050ea8 100644 --- a/src/views.ts +++ b/src/views.ts @@ -1171,13 +1171,20 @@ export class AssetEditorView implements ProjectView, pixed.EditorContext { // TODO: check fmt w/h/etc limits // TODO: defer editor creation // TODO: only refresh when needed - if (fileid.endsWith('.chr') && data instanceof Uint8Array) { + if (platform_id.startsWith('nes') && fileid.endsWith('.chr') && data instanceof Uint8Array) { // is this a NES CHR? let node = new pixed.FileDataNode(projectWindows, fileid); const neschrfmt = {w:8,h:8,bpp:1,count:(data.length>>4),brev:true,np:2,pofs:8,remap:[0,1,2,4,5,6,7,8,9,10,11,12]}; // TODO this.addPixelEditor(this.ensureFileDiv(fileid), node, neschrfmt); this.registerAsset("charmap", node, true); nassets++; + } else if (platform_id.startsWith('nes') && fileid.endsWith('.pal') && data instanceof Uint8Array) { + // is this a NES PAL? + let node = new pixed.FileDataNode(projectWindows, fileid); + const nespalfmt = {pal:"nes",layout:"nes"}; + this.addPaletteEditor(this.ensureFileDiv(fileid), node, nespalfmt); + this.registerAsset("palette", node, false); + nassets++; } else if (typeof data === 'string') { let textfrags = this.scanFileTextForAssets(fileid, data); for (let frag of textfrags) {