ticbuild 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.attachments/support_me_on_kofi_beige.png +0 -0
- package/.env.example +3 -0
- package/.prettierignore +10 -0
- package/LICENSE +15 -0
- package/README.md +429 -0
- package/debug/obj/resolvedManifest.ticbuild.jsonc +108 -0
- package/dist/backend/ImportedResource.d.ts +11 -0
- package/dist/backend/ImportedResource.d.ts.map +1 -0
- package/dist/backend/ImportedResource.js +53 -0
- package/dist/backend/ImportedResource.js.map +1 -0
- package/dist/backend/ImportedResourceTypes.d.ts +24 -0
- package/dist/backend/ImportedResourceTypes.d.ts.map +1 -0
- package/dist/backend/ImportedResourceTypes.js +35 -0
- package/dist/backend/ImportedResourceTypes.js.map +1 -0
- package/dist/backend/codeBanking.test.d.ts +2 -0
- package/dist/backend/codeBanking.test.d.ts.map +1 -0
- package/dist/backend/codeBanking.test.js.map +1 -0
- package/dist/backend/importResources.d.ts +4 -0
- package/dist/backend/importResources.d.ts.map +1 -0
- package/dist/backend/importResources.js +58 -0
- package/dist/backend/importResources.js.map +1 -0
- package/dist/backend/importUtils.d.ts +14 -0
- package/dist/backend/importUtils.d.ts.map +1 -0
- package/dist/backend/importUtils.js +77 -0
- package/dist/backend/importUtils.js.map +1 -0
- package/dist/backend/importers/LuaCodeImporter.d.ts +47 -0
- package/dist/backend/importers/LuaCodeImporter.d.ts.map +1 -0
- package/dist/backend/importers/LuaCodeImporter.js +196 -0
- package/dist/backend/importers/LuaCodeImporter.js.map +1 -0
- package/dist/backend/importers/LuaCodeImporter.test.d.ts +2 -0
- package/dist/backend/importers/LuaCodeImporter.test.d.ts.map +1 -0
- package/dist/backend/importers/LuaCodeImporter.test.js.map +1 -0
- package/dist/backend/importers/binaryResourceImporter.d.ts +22 -0
- package/dist/backend/importers/binaryResourceImporter.d.ts.map +1 -0
- package/dist/backend/importers/binaryResourceImporter.js +53 -0
- package/dist/backend/importers/binaryResourceImporter.js.map +1 -0
- package/dist/backend/importers/luaImporter.d.ts +1 -0
- package/dist/backend/importers/luaImporter.d.ts.map +1 -0
- package/dist/backend/importers/luaImporter.js +3 -0
- package/dist/backend/importers/luaImporter.js.map +1 -0
- package/dist/backend/importers/textResourceImporter.d.ts +23 -0
- package/dist/backend/importers/textResourceImporter.d.ts.map +1 -0
- package/dist/backend/importers/textResourceImporter.js +55 -0
- package/dist/backend/importers/textResourceImporter.js.map +1 -0
- package/dist/backend/importers/tic80CartImporter.d.ts +21 -0
- package/dist/backend/importers/tic80CartImporter.d.ts.map +1 -0
- package/dist/backend/importers/tic80CartImporter.js +96 -0
- package/dist/backend/importers/tic80CartImporter.js.map +1 -0
- package/dist/backend/loadAllImports.d.ts +1 -0
- package/dist/backend/loadAllImports.d.ts.map +1 -0
- package/dist/backend/loadAllImports.js +3 -0
- package/dist/backend/loadAllImports.js.map +1 -0
- package/dist/backend/luaBinaryEncoding.d.ts +6 -0
- package/dist/backend/luaBinaryEncoding.d.ts.map +1 -0
- package/dist/backend/luaBinaryEncoding.js +94 -0
- package/dist/backend/luaBinaryEncoding.js.map +1 -0
- package/dist/backend/luaPreprocessor.d.ts +8 -0
- package/dist/backend/luaPreprocessor.d.ts.map +1 -0
- package/dist/backend/luaPreprocessor.js +862 -0
- package/dist/backend/luaPreprocessor.js.map +1 -0
- package/dist/backend/luaPreprocessor.test.d.ts +2 -0
- package/dist/backend/luaPreprocessor.test.d.ts.map +1 -0
- package/dist/backend/luaPreprocessor.test.js.map +1 -0
- package/dist/backend/manifestLoader.d.ts +19 -0
- package/dist/backend/manifestLoader.d.ts.map +1 -0
- package/dist/backend/manifestLoader.js +142 -0
- package/dist/backend/manifestLoader.js.map +1 -0
- package/dist/backend/manifestLoader.test.d.ts +2 -0
- package/dist/backend/manifestLoader.test.d.ts.map +1 -0
- package/dist/backend/manifestLoader.test.js.map +1 -0
- package/dist/backend/manifestTypes.d.ts +454 -0
- package/dist/backend/manifestTypes.d.ts.map +1 -0
- package/dist/backend/manifestTypes.js +28 -0
- package/dist/backend/manifestTypes.js.map +1 -0
- package/dist/backend/project.d.ts +24 -0
- package/dist/backend/project.d.ts.map +1 -0
- package/dist/backend/project.js +159 -0
- package/dist/backend/project.js.map +1 -0
- package/dist/backend/projectCore.d.ts +34 -0
- package/dist/backend/projectCore.d.ts.map +1 -0
- package/dist/backend/projectCore.js +226 -0
- package/dist/backend/projectCore.js.map +1 -0
- package/dist/backend/tic80Resolver.d.ts +6 -0
- package/dist/backend/tic80Resolver.d.ts.map +1 -0
- package/dist/backend/tic80Resolver.js +66 -0
- package/dist/backend/tic80Resolver.js.map +1 -0
- package/dist/buildInfo.d.ts +9 -0
- package/dist/buildInfo.d.ts.map +1 -0
- package/dist/buildInfo.js +13 -0
- package/dist/buildInfo.js.map +1 -0
- package/dist/frontend/build.d.ts +3 -0
- package/dist/frontend/build.d.ts.map +1 -0
- package/dist/frontend/build.js +8 -0
- package/dist/frontend/build.js.map +1 -0
- package/dist/frontend/codeBankWarnings.test.d.ts +2 -0
- package/dist/frontend/codeBankWarnings.test.d.ts.map +1 -0
- package/dist/frontend/codeBankWarnings.test.js.map +1 -0
- package/dist/frontend/core.d.ts +3 -0
- package/dist/frontend/core.d.ts.map +1 -0
- package/dist/frontend/core.js +259 -0
- package/dist/frontend/core.js.map +1 -0
- package/dist/frontend/init.d.ts +7 -0
- package/dist/frontend/init.d.ts.map +1 -0
- package/dist/frontend/init.js +95 -0
- package/dist/frontend/init.js.map +1 -0
- package/dist/frontend/parseOptions.d.ts +7 -0
- package/dist/frontend/parseOptions.d.ts.map +1 -0
- package/dist/frontend/parseOptions.js +68 -0
- package/dist/frontend/parseOptions.js.map +1 -0
- package/dist/frontend/run.d.ts +3 -0
- package/dist/frontend/run.d.ts.map +1 -0
- package/dist/frontend/run.js +63 -0
- package/dist/frontend/run.js.map +1 -0
- package/dist/frontend/watch.d.ts +3 -0
- package/dist/frontend/watch.d.ts.map +1 -0
- package/dist/frontend/watch.js +208 -0
- package/dist/frontend/watch.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +191 -0
- package/dist/index.js.map +1 -0
- package/dist/obj/resolvedManifest.ticbuild.jsonc +110 -0
- package/dist/obj/variables.json +19 -0
- package/dist/utils/algorithms.d.ts +4 -0
- package/dist/utils/algorithms.d.ts.map +1 -0
- package/dist/utils/algorithms.js +15 -0
- package/dist/utils/algorithms.js.map +1 -0
- package/dist/utils/algorithms.test.d.ts +2 -0
- package/dist/utils/algorithms.test.d.ts.map +1 -0
- package/dist/utils/algorithms.test.js.map +1 -0
- package/dist/utils/bin.d.ts +4 -0
- package/dist/utils/bin.d.ts.map +1 -0
- package/dist/utils/bin.js +16 -0
- package/dist/utils/bin.js.map +1 -0
- package/dist/utils/charMap.d.ts +28 -0
- package/dist/utils/charMap.d.ts.map +1 -0
- package/dist/utils/charMap.js +31 -0
- package/dist/utils/charMap.js.map +1 -0
- package/dist/utils/console.d.ts +10 -0
- package/dist/utils/console.d.ts.map +1 -0
- package/dist/utils/console.js +66 -0
- package/dist/utils/console.js.map +1 -0
- package/dist/utils/encoding/b85.d.ts +5 -0
- package/dist/utils/encoding/b85.d.ts.map +1 -0
- package/dist/utils/encoding/b85.js +136 -0
- package/dist/utils/encoding/b85.js.map +1 -0
- package/dist/utils/encoding/codecRegistry.d.ts +333 -0
- package/dist/utils/encoding/codecRegistry.d.ts.map +1 -0
- package/dist/utils/encoding/codecRegistry.js +81 -0
- package/dist/utils/encoding/codecRegistry.js.map +1 -0
- package/dist/utils/encoding/hex.d.ts +3 -0
- package/dist/utils/encoding/hex.d.ts.map +1 -0
- package/dist/utils/encoding/hex.js +30 -0
- package/dist/utils/encoding/hex.js.map +1 -0
- package/dist/utils/encoding/lz.d.ts +12 -0
- package/dist/utils/encoding/lz.d.ts.map +1 -0
- package/dist/utils/encoding/lz.js +271 -0
- package/dist/utils/encoding/lz.js.map +1 -0
- package/dist/utils/enum.d.ts +45 -0
- package/dist/utils/enum.d.ts.map +1 -0
- package/dist/utils/enum.js +135 -0
- package/dist/utils/enum.js.map +1 -0
- package/dist/utils/errorHandling.d.ts +13 -0
- package/dist/utils/errorHandling.d.ts.map +1 -0
- package/dist/utils/errorHandling.js +18 -0
- package/dist/utils/errorHandling.js.map +1 -0
- package/dist/utils/fileSystem.d.ts +16 -0
- package/dist/utils/fileSystem.d.ts.map +1 -0
- package/dist/utils/fileSystem.js +161 -0
- package/dist/utils/fileSystem.js.map +1 -0
- package/dist/utils/help.d.ts +7 -0
- package/dist/utils/help.d.ts.map +1 -0
- package/dist/utils/help.js +87 -0
- package/dist/utils/help.js.map +1 -0
- package/dist/utils/lua/luaUtils.d.ts +1 -0
- package/dist/utils/lua/luaUtils.d.ts.map +1 -0
- package/dist/utils/lua/luaUtils.js +3 -0
- package/dist/utils/lua/luaUtils.js.map +1 -0
- package/dist/utils/lua/lua_alias_expressions.d.ts +20 -0
- package/dist/utils/lua/lua_alias_expressions.d.ts.map +1 -0
- package/dist/utils/lua/lua_alias_expressions.js +233 -0
- package/dist/utils/lua/lua_alias_expressions.js.map +1 -0
- package/dist/utils/lua/lua_alias_literals.d.ts +20 -0
- package/dist/utils/lua/lua_alias_literals.d.ts.map +1 -0
- package/dist/utils/lua/lua_alias_literals.js +165 -0
- package/dist/utils/lua/lua_alias_literals.js.map +1 -0
- package/dist/utils/lua/lua_alias_shared.d.ts +31 -0
- package/dist/utils/lua/lua_alias_shared.d.ts.map +1 -0
- package/dist/utils/lua/lua_alias_shared.js +415 -0
- package/dist/utils/lua/lua_alias_shared.js.map +1 -0
- package/dist/utils/lua/lua_ast.d.ts +9 -0
- package/dist/utils/lua/lua_ast.d.ts.map +1 -0
- package/dist/utils/lua/lua_ast.js +90 -0
- package/dist/utils/lua/lua_ast.js.map +1 -0
- package/dist/utils/lua/lua_fundamentals.d.ts +14 -0
- package/dist/utils/lua/lua_fundamentals.d.ts.map +1 -0
- package/dist/utils/lua/lua_fundamentals.js +93 -0
- package/dist/utils/lua/lua_fundamentals.js.map +1 -0
- package/dist/utils/lua/lua_pack_locals.d.ts +3 -0
- package/dist/utils/lua/lua_pack_locals.d.ts.map +1 -0
- package/dist/utils/lua/lua_pack_locals.js +206 -0
- package/dist/utils/lua/lua_pack_locals.js.map +1 -0
- package/dist/utils/lua/lua_processor.d.ts +65 -0
- package/dist/utils/lua/lua_processor.d.ts.map +1 -0
- package/dist/utils/lua/lua_processor.js +1153 -0
- package/dist/utils/lua/lua_processor.js.map +1 -0
- package/dist/utils/lua/lua_processor.test.d.ts +2 -0
- package/dist/utils/lua/lua_processor.test.d.ts.map +1 -0
- package/dist/utils/lua/lua_processor.test.js.map +1 -0
- package/dist/utils/lua/lua_remove_unused_functions.d.ts +6 -0
- package/dist/utils/lua/lua_remove_unused_functions.d.ts.map +1 -0
- package/dist/utils/lua/lua_remove_unused_functions.js +474 -0
- package/dist/utils/lua/lua_remove_unused_functions.js.map +1 -0
- package/dist/utils/lua/lua_remove_unused_locals.d.ts +3 -0
- package/dist/utils/lua/lua_remove_unused_locals.d.ts.map +1 -0
- package/dist/utils/lua/lua_remove_unused_locals.js +303 -0
- package/dist/utils/lua/lua_remove_unused_locals.js.map +1 -0
- package/dist/utils/lua/lua_rename_allowed_table_keys.d.ts +3 -0
- package/dist/utils/lua/lua_rename_allowed_table_keys.d.ts.map +1 -0
- package/dist/utils/lua/lua_rename_allowed_table_keys.js +157 -0
- package/dist/utils/lua/lua_rename_allowed_table_keys.js.map +1 -0
- package/dist/utils/lua/lua_rename_table_fields.d.ts +3 -0
- package/dist/utils/lua/lua_rename_table_fields.d.ts.map +1 -0
- package/dist/utils/lua/lua_rename_table_fields.js +427 -0
- package/dist/utils/lua/lua_rename_table_fields.js.map +1 -0
- package/dist/utils/lua/lua_renamer.d.ts +3 -0
- package/dist/utils/lua/lua_renamer.d.ts.map +1 -0
- package/dist/utils/lua/lua_renamer.js +229 -0
- package/dist/utils/lua/lua_renamer.js.map +1 -0
- package/dist/utils/lua/lua_simplify.d.ts +3 -0
- package/dist/utils/lua/lua_simplify.d.ts.map +1 -0
- package/dist/utils/lua/lua_simplify.js +541 -0
- package/dist/utils/lua/lua_simplify.js.map +1 -0
- package/dist/utils/lua/lua_utils.d.ts +13 -0
- package/dist/utils/lua/lua_utils.d.ts.map +1 -0
- package/dist/utils/lua/lua_utils.js +58 -0
- package/dist/utils/lua/lua_utils.js.map +1 -0
- package/dist/utils/math.d.ts +2 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +7 -0
- package/dist/utils/math.js.map +1 -0
- package/dist/utils/math.test.d.ts +2 -0
- package/dist/utils/math.test.d.ts.map +1 -0
- package/dist/utils/math.test.js.map +1 -0
- package/dist/utils/templates.d.ts +3 -0
- package/dist/utils/templates.d.ts.map +1 -0
- package/dist/utils/templates.js +57 -0
- package/dist/utils/templates.js.map +1 -0
- package/dist/utils/tic80/bankSupport.test.d.ts +2 -0
- package/dist/utils/tic80/bankSupport.test.d.ts.map +1 -0
- package/dist/utils/tic80/bankSupport.test.js.map +1 -0
- package/dist/utils/tic80/cartLoader.d.ts +3 -0
- package/dist/utils/tic80/cartLoader.d.ts.map +1 -0
- package/dist/utils/tic80/cartLoader.js +54 -0
- package/dist/utils/tic80/cartLoader.js.map +1 -0
- package/dist/utils/tic80/cartWriter.d.ts +5 -0
- package/dist/utils/tic80/cartWriter.d.ts.map +1 -0
- package/dist/utils/tic80/cartWriter.js +95 -0
- package/dist/utils/tic80/cartWriter.js.map +1 -0
- package/dist/utils/tic80/launch.d.ts +4 -0
- package/dist/utils/tic80/launch.d.ts.map +1 -0
- package/dist/utils/tic80/launch.js +36 -0
- package/dist/utils/tic80/launch.js.map +1 -0
- package/dist/utils/tic80/tic80.d.ts +1149 -0
- package/dist/utils/tic80/tic80.d.ts.map +1 -0
- package/dist/utils/tic80/tic80.js +114 -0
- package/dist/utils/tic80/tic80.js.map +1 -0
- package/dist/utils/utils.d.ts +13 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +109 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/utils/versionString.d.ts +12 -0
- package/dist/utils/versionString.d.ts.map +1 -0
- package/dist/utils/versionString.js +33 -0
- package/dist/utils/versionString.js.map +1 -0
- package/dist/utils/windowPosition.d.ts +10 -0
- package/dist/utils/windowPosition.d.ts.map +1 -0
- package/dist/utils/windowPosition.js +222 -0
- package/dist/utils/windowPosition.js.map +1 -0
- package/example.ticbuild.jsonc +94 -0
- package/package.json +51 -0
- package/templates/help/build.txt +23 -0
- package/templates/help/init.txt +23 -0
- package/templates/help/main.txt +41 -0
- package/templates/help/run.txt +22 -0
- package/templates/help/tic80.txt +8 -0
- package/templates/help/watch.txt +24 -0
- package/templates/minimal/project.ticbuild.jsonc +43 -0
- package/ticbuild-1.0.0.tgz +0 -0
- package/ticbuild.schema.json +327 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tic80.d.ts","sourceRoot":"","sources":["../../../src/utils/tic80/tic80.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkH2B,CAAC;AAE7D,MAAM,MAAM,qBAAqB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,qBAAqB,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// types for tic80 specific platform
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.kTic80CartChunkTypes = void 0;
|
|
5
|
+
const bin_1 = require("../bin");
|
|
6
|
+
const enum_1 = require("../enum");
|
|
7
|
+
// https://github.com/nesbox/TIC-80/wiki/.tic-File-Format
|
|
8
|
+
exports.kTic80CartChunkTypes = (0, enum_1.defineEnum)({
|
|
9
|
+
// 256 sprites/tiles, 2 pixels per byte.
|
|
10
|
+
TILES: {
|
|
11
|
+
value: 1,
|
|
12
|
+
bankCount: 8,
|
|
13
|
+
sizePerBank: 0x2000,
|
|
14
|
+
deprecated: false,
|
|
15
|
+
},
|
|
16
|
+
SPRITES: {
|
|
17
|
+
value: 2,
|
|
18
|
+
bankCount: 8,
|
|
19
|
+
sizePerBank: 0x2000,
|
|
20
|
+
deprecated: false,
|
|
21
|
+
},
|
|
22
|
+
MAP: {
|
|
23
|
+
value: 4,
|
|
24
|
+
bankCount: 8,
|
|
25
|
+
sizePerBank: 0x7f80,
|
|
26
|
+
deprecated: false,
|
|
27
|
+
},
|
|
28
|
+
// This represents the code, in ASCII text format.
|
|
29
|
+
// Version Notes:
|
|
30
|
+
// 0.80 removed support for separate code banks. Older cartridge's
|
|
31
|
+
// discrete banks will be loaded into a single codebase (with a newline
|
|
32
|
+
// between each) - starting at bank 7 (which appears at the top) and
|
|
33
|
+
// working backwards to bank 0. The bank number is therefore deprecated in
|
|
34
|
+
// version 0.80.
|
|
35
|
+
// 1.0 supports up to 512kb of code. This code is stored sequentially
|
|
36
|
+
// (uncompressed) across up to 8 banks. Individual banks are joined into a
|
|
37
|
+
// single large string when loaded (in sequential 0..7 order). The editor
|
|
38
|
+
// buffer split into multiple banks when saved to cartridge (when larger
|
|
39
|
+
// than 64kb). A cartridge may consist of 1 to 8 code banks.
|
|
40
|
+
// * it means we can support multiple code banks each up to 64kb.
|
|
41
|
+
// * ASCII encoding only (no bin, no unicode possible...)
|
|
42
|
+
//
|
|
43
|
+
CODE: {
|
|
44
|
+
value: 5, //
|
|
45
|
+
bankCount: 8,
|
|
46
|
+
sizePerBank: (0, bin_1.kbToBytes)(64) - 1, // size must be <= 65535 bytes because of how size is represented.
|
|
47
|
+
deprecated: false,
|
|
48
|
+
},
|
|
49
|
+
// sprite flags data
|
|
50
|
+
FLAGS: {
|
|
51
|
+
value: 6,
|
|
52
|
+
bankCount: 8,
|
|
53
|
+
sizePerBank: 0x200,
|
|
54
|
+
deprecated: false,
|
|
55
|
+
},
|
|
56
|
+
SFX: {
|
|
57
|
+
value: 9,
|
|
58
|
+
bankCount: 8,
|
|
59
|
+
sizePerBank: 0x1080,
|
|
60
|
+
deprecated: false,
|
|
61
|
+
},
|
|
62
|
+
WAVEFORMS: {
|
|
63
|
+
value: 10,
|
|
64
|
+
bankCount: 1, // no bank support.
|
|
65
|
+
sizePerBank: 0x1000,
|
|
66
|
+
deprecated: false,
|
|
67
|
+
},
|
|
68
|
+
PALETTE: {
|
|
69
|
+
value: 12,
|
|
70
|
+
bankCount: 1, // no bank support.
|
|
71
|
+
sizePerBank: 96, // 48 SCN + 48 BDR
|
|
72
|
+
deprecated: false,
|
|
73
|
+
},
|
|
74
|
+
MUSIC_TRACKS: {
|
|
75
|
+
value: 14,
|
|
76
|
+
bankCount: 8,
|
|
77
|
+
sizePerBank: 0x198, // 0x13E64...0x13FFB
|
|
78
|
+
deprecated: false,
|
|
79
|
+
},
|
|
80
|
+
MUSIC_PATTERNS: {
|
|
81
|
+
value: 15,
|
|
82
|
+
bankCount: 8,
|
|
83
|
+
sizePerBank: 0x2d00, // 0x11164...0x13E63
|
|
84
|
+
deprecated: false,
|
|
85
|
+
},
|
|
86
|
+
CODE_COMPRESSED: {
|
|
87
|
+
value: 16, //
|
|
88
|
+
bankCount: 1, // no bank support. compressed code must be 64kb or less, compressed with ZLIB.
|
|
89
|
+
sizePerBank: (0, bin_1.kbToBytes)(64) - 1, //
|
|
90
|
+
deprecated: true,
|
|
91
|
+
},
|
|
92
|
+
// if present, default palette & waveforms are loaded.
|
|
93
|
+
DEFAULT: {
|
|
94
|
+
value: 17,
|
|
95
|
+
bankCount: 1,
|
|
96
|
+
sizePerBank: 0,
|
|
97
|
+
deprecated: false,
|
|
98
|
+
},
|
|
99
|
+
// bank 0 used as cover image.
|
|
100
|
+
// otherwise not certain what this is -- maybe loaded as VRAM (0x0000) at startup?
|
|
101
|
+
SCREEN: {
|
|
102
|
+
value: 18,
|
|
103
|
+
bankCount: 8,
|
|
104
|
+
sizePerBank: (0, bin_1.kbToBytes)(16),
|
|
105
|
+
deprecated: false,
|
|
106
|
+
},
|
|
107
|
+
CODE_WASM: {
|
|
108
|
+
value: 19,
|
|
109
|
+
bankCount: 4,
|
|
110
|
+
sizePerBank: 0,
|
|
111
|
+
deprecated: false,
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=tic80.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tic80.js","sourceRoot":"","sources":["../../../src/utils/tic80/tic80.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;AAEpC,gCAAmC;AACnC,kCAAqC;AAiBrC,yDAAyD;AAC5C,QAAA,oBAAoB,GAAG,IAAA,iBAAU,EAAC;IAC7C,wCAAwC;IACxC,KAAK,EAAE;QACL,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,KAAK;KAClB;IAED,OAAO,EAAE;QACP,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,KAAK;KAClB;IAED,GAAG,EAAE;QACH,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,KAAK;KAClB;IAED,kDAAkD;IAClD,iBAAiB;IACjB,sEAAsE;IACtE,2EAA2E;IAC3E,wEAAwE;IACxE,8EAA8E;IAC9E,oBAAoB;IAEpB,yEAAyE;IACzE,8EAA8E;IAC9E,6EAA6E;IAC7E,4EAA4E;IAC5E,gEAAgE;IAEhE,iEAAiE;IACjE,yDAAyD;IACzD,EAAE;IAEF,IAAI,EAAE;QACJ,KAAK,EAAE,CAAC,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,IAAA,eAAS,EAAC,EAAE,CAAC,GAAG,CAAC,EAAE,kEAAkE;QAClG,UAAU,EAAE,KAAK;KAClB;IAED,oBAAoB;IACpB,KAAK,EAAE;QACL,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,KAAK;KAClB;IAED,GAAG,EAAE;QACH,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,KAAK;KAClB;IAED,SAAS,EAAE;QACT,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC,EAAE,mBAAmB;QACjC,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,KAAK;KAClB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC,EAAE,mBAAmB;QACjC,WAAW,EAAE,EAAE,EAAE,kBAAkB;QACnC,UAAU,EAAE,KAAK;KAClB;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,KAAK,EAAE,oBAAoB;QACxC,UAAU,EAAE,KAAK;KAClB;IACD,cAAc,EAAE;QACd,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,MAAM,EAAE,oBAAoB;QACzC,UAAU,EAAE,KAAK;KAClB;IACD,eAAe,EAAE;QACf,KAAK,EAAE,EAAE,EAAE,EAAE;QACb,SAAS,EAAE,CAAC,EAAE,+EAA+E;QAC7F,WAAW,EAAE,IAAA,eAAS,EAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;QAClC,UAAU,EAAE,IAAI;KACjB;IACD,sDAAsD;IACtD,OAAO,EAAE;QACP,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,KAAK;KAClB;IACD,8BAA8B;IAC9B,kFAAkF;IAClF,MAAM,EAAE;QACN,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,IAAA,eAAS,EAAC,EAAE,CAAC;QAC1B,UAAU,EAAE,KAAK;KAClB;IACD,SAAS,EAAE;QACT,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,KAAK;KAClB;CACwD,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const kNullKey = "__NULL__";
|
|
2
|
+
export declare function TryParseInt(value: any): number | null;
|
|
3
|
+
export declare const formatBytes: (n: number | null) => string;
|
|
4
|
+
export declare function stripExtension(fileName: string): string;
|
|
5
|
+
export type TObject = {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
};
|
|
8
|
+
export declare function deepMergeObjects(target: TObject, source: TObject): void;
|
|
9
|
+
export declare function extractVariablesFromObject(obj: TObject): Map<string, string>;
|
|
10
|
+
export declare function makeMapSerializable<K, V>(map: Map<K, V>): object;
|
|
11
|
+
export declare function deserializeMap<K, V>(obj: object): Map<K, V>;
|
|
12
|
+
export declare function CoalesceBool(value: boolean | null | undefined, defaultValue: boolean): boolean;
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAWrD;AAED,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,GAAG,IAAI,WAK3C,CAAC;AAIF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,MAAM,MAAM,OAAO,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAI7C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAyBvE;AAiCD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAE5E;AAGD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAEhE;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAE3D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAK9F"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatBytes = exports.kNullKey = void 0;
|
|
4
|
+
exports.TryParseInt = TryParseInt;
|
|
5
|
+
exports.stripExtension = stripExtension;
|
|
6
|
+
exports.deepMergeObjects = deepMergeObjects;
|
|
7
|
+
exports.extractVariablesFromObject = extractVariablesFromObject;
|
|
8
|
+
exports.makeMapSerializable = makeMapSerializable;
|
|
9
|
+
exports.deserializeMap = deserializeMap;
|
|
10
|
+
exports.CoalesceBool = CoalesceBool;
|
|
11
|
+
exports.kNullKey = "__NULL__";
|
|
12
|
+
function TryParseInt(value) {
|
|
13
|
+
if (typeof value === "number" && isFinite(value)) {
|
|
14
|
+
return Math.floor(value);
|
|
15
|
+
}
|
|
16
|
+
if (typeof value === "string") {
|
|
17
|
+
const parsed = parseInt(value, 10);
|
|
18
|
+
if (!isNaN(parsed)) {
|
|
19
|
+
return parsed;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const formatBytes = (n) => {
|
|
25
|
+
if (n == null)
|
|
26
|
+
return "...";
|
|
27
|
+
if (n < 1024)
|
|
28
|
+
return `${n} B`;
|
|
29
|
+
if (n < 1024 * 1024)
|
|
30
|
+
return `${(n / 1024).toFixed(1)} KB`;
|
|
31
|
+
return `${(n / (1024 * 1024)).toFixed(2)} MB`;
|
|
32
|
+
};
|
|
33
|
+
exports.formatBytes = formatBytes;
|
|
34
|
+
// Remove the extension from a filename string.
|
|
35
|
+
// example: "myfile.txt" => "myfile"
|
|
36
|
+
function stripExtension(fileName) {
|
|
37
|
+
return fileName.replace(/\.[^./\\]+$/, "");
|
|
38
|
+
}
|
|
39
|
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
40
|
+
// Generic deep merge that treats arrays as leaf values
|
|
41
|
+
function deepMergeObjects(target, source) {
|
|
42
|
+
for (const key in source) {
|
|
43
|
+
if (!source.hasOwnProperty(key)) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const sourceValue = source[key];
|
|
47
|
+
const targetValue = target[key];
|
|
48
|
+
// Arrays are treated as leaf values - replace entirely
|
|
49
|
+
if (Array.isArray(sourceValue)) {
|
|
50
|
+
target[key] = sourceValue;
|
|
51
|
+
}
|
|
52
|
+
// Objects are merged recursively
|
|
53
|
+
else if (sourceValue !== null && typeof sourceValue === "object" && !Array.isArray(sourceValue)) {
|
|
54
|
+
if (!targetValue || typeof targetValue !== "object") {
|
|
55
|
+
target[key] = {};
|
|
56
|
+
}
|
|
57
|
+
deepMergeObjects(target[key], sourceValue);
|
|
58
|
+
}
|
|
59
|
+
// Primitives override
|
|
60
|
+
else {
|
|
61
|
+
target[key] = sourceValue;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Extracts variables from non-array leaf values in an object
|
|
66
|
+
function extractVariablesFromObject2(obj, prefix) {
|
|
67
|
+
const variables = new Map();
|
|
68
|
+
for (const key in obj) {
|
|
69
|
+
if (!obj.hasOwnProperty(key)) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const value = obj[key];
|
|
73
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
74
|
+
// Arrays are leaf values, don't process them
|
|
75
|
+
if (Array.isArray(value)) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
// Objects are processed recursively
|
|
79
|
+
else if (value !== null && typeof value === "object") {
|
|
80
|
+
const childVars = extractVariablesFromObject2(value, fullKey);
|
|
81
|
+
for (const [k, v] of childVars.entries()) {
|
|
82
|
+
variables.set(k, v);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Primitives become variables
|
|
86
|
+
else if (value !== undefined && value !== null) {
|
|
87
|
+
variables.set(fullKey, String(value));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return variables;
|
|
91
|
+
}
|
|
92
|
+
// Extracts variables from non-array leaf values in an object
|
|
93
|
+
function extractVariablesFromObject(obj) {
|
|
94
|
+
return extractVariablesFromObject2(obj, undefined);
|
|
95
|
+
}
|
|
96
|
+
// where K and V are serializable types
|
|
97
|
+
function makeMapSerializable(map) {
|
|
98
|
+
return Object.fromEntries(map.entries());
|
|
99
|
+
}
|
|
100
|
+
function deserializeMap(obj) {
|
|
101
|
+
return new Map(Object.entries(obj));
|
|
102
|
+
}
|
|
103
|
+
function CoalesceBool(value, defaultValue) {
|
|
104
|
+
if (value === null || value === undefined) {
|
|
105
|
+
return defaultValue;
|
|
106
|
+
}
|
|
107
|
+
return value;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;;AAEA,kCAWC;AAWD,wCAEC;AAMD,4CAyBC;AAiCD,gEAEC;AAGD,kDAEC;AACD,wCAEC;AAED,oCAKC;AA3GY,QAAA,QAAQ,GAAG,UAAU,CAAC;AAEnC,SAAgB,WAAW,CAAC,KAAU;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,MAAM,WAAW,GAAG,CAAC,CAAgB,EAAE,EAAE;IAC9C,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,CAAC,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAChD,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB;AAEF,+CAA+C;AAC/C,oCAAoC;AACpC,SAAgB,cAAc,CAAC,QAAgB;IAC7C,OAAO,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAGD,yGAAyG;AAEzG,uDAAuD;AACvD,SAAgB,gBAAgB,CAAC,MAAe,EAAE,MAAe;IAC/D,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhC,uDAAuD;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;QAC5B,CAAC;QACD,iCAAiC;aAC5B,IAAI,WAAW,KAAK,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAChG,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC;QACD,sBAAsB;aACjB,CAAC;YACJ,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,SAAS,2BAA2B,CAAC,GAAY,EAAE,MAA0B;IAC3E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAElD,6CAA6C;QAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,oCAAoC;aAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,2BAA2B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9D,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,8BAA8B;aACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC/C,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,6DAA6D;AAC7D,SAAgB,0BAA0B,CAAC,GAAY;IACrD,OAAO,2BAA2B,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACrD,CAAC;AAED,uCAAuC;AACvC,SAAgB,mBAAmB,CAAO,GAAc;IACtD,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC;AACD,SAAgB,cAAc,CAAO,GAAW;IAC9C,OAAO,IAAI,GAAG,CAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAa,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,YAAY,CAAC,KAAiC,EAAE,YAAqB;IACnF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type BuildInfoLike = {
|
|
2
|
+
gitTag: string | null;
|
|
3
|
+
commitsSinceTag: number | null;
|
|
4
|
+
dirty: boolean | null;
|
|
5
|
+
buildDate?: string;
|
|
6
|
+
lastCommitDate?: string | null;
|
|
7
|
+
commitHash?: string | null;
|
|
8
|
+
};
|
|
9
|
+
export declare function getBuildVersionTag(info: BuildInfoLike): string;
|
|
10
|
+
export declare function getAppVersionString(): string;
|
|
11
|
+
export declare function getAppVersionAndCommitString(): string;
|
|
12
|
+
//# sourceMappingURL=versionString.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionString.d.ts","sourceRoot":"","sources":["../../src/utils/versionString.ts"],"names":[],"mappings":"AAiDA,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAOF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAW9D;AAID,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAGD,wBAAgB,4BAA4B,IAAI,MAAM,CAErD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getBuildVersionTag = getBuildVersionTag;
|
|
4
|
+
exports.getAppVersionString = getAppVersionString;
|
|
5
|
+
exports.getAppVersionAndCommitString = getAppVersionAndCommitString;
|
|
6
|
+
const buildInfo_1 = require("../buildInfo");
|
|
7
|
+
// Version tag is like:
|
|
8
|
+
// - v1
|
|
9
|
+
// - v1+290
|
|
10
|
+
// - v1+290(!)
|
|
11
|
+
// - unknown
|
|
12
|
+
function getBuildVersionTag(info) {
|
|
13
|
+
if (!info.gitTag)
|
|
14
|
+
return "unknown";
|
|
15
|
+
let str = String(info.gitTag);
|
|
16
|
+
if (info.commitsSinceTag && info.commitsSinceTag > 0) {
|
|
17
|
+
str += `+${info.commitsSinceTag}`;
|
|
18
|
+
}
|
|
19
|
+
if (info.dirty) {
|
|
20
|
+
str += "(!)";
|
|
21
|
+
}
|
|
22
|
+
return str;
|
|
23
|
+
}
|
|
24
|
+
// Hash input / display string.
|
|
25
|
+
// Example: "Ticbuild v1+290(!)"
|
|
26
|
+
function getAppVersionString() {
|
|
27
|
+
return `Ticbuild ${getBuildVersionTag(buildInfo_1.buildInfo)}`;
|
|
28
|
+
}
|
|
29
|
+
// Example: "Ticbuild v1+290(!) (abcdef1234)"
|
|
30
|
+
function getAppVersionAndCommitString() {
|
|
31
|
+
return `Ticbuild ${getBuildVersionTag(buildInfo_1.buildInfo)} (${buildInfo_1.buildInfo.commitHash ?? "unknown"})`;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=versionString.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionString.js","sourceRoot":"","sources":["../../src/utils/versionString.ts"],"names":[],"mappings":";;AA+DA,gDAWC;AAID,kDAEC;AAGD,oEAEC;AArFD,4CAAyC;AA0DzC,uBAAuB;AACvB,OAAO;AACP,WAAW;AACX,cAAc;AACd,YAAY;AACZ,SAAgB,kBAAkB,CAAC,IAAmB;IACpD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAEnC,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;QACrD,GAAG,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,GAAG,IAAI,KAAK,CAAC;IACf,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+BAA+B;AAC/B,gCAAgC;AAChC,SAAgB,mBAAmB;IACjC,OAAO,YAAY,kBAAkB,CAAC,qBAAS,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,6CAA6C;AAC7C,SAAgB,4BAA4B;IAC1C,OAAO,YAAY,kBAAkB,CAAC,qBAAS,CAAC,KAAK,qBAAS,CAAC,UAAU,IAAI,SAAS,GAAG,CAAC;AAC5F,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface WindowPlacement {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function getWindowPosition(pid: number): Promise<WindowPlacement | null>;
|
|
8
|
+
export declare function setWindowPosition(pid: number, placement: WindowPlacement): Promise<boolean>;
|
|
9
|
+
export declare function waitForWindow(pid: number, timeoutMs?: number): Promise<boolean>;
|
|
10
|
+
//# sourceMappingURL=windowPosition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windowPosition.d.ts","sourceRoot":"","sources":["../../src/utils/windowPosition.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA4FpF;AAGD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAiEjG;AAGD,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAmB3F"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getWindowPosition = getWindowPosition;
|
|
37
|
+
exports.setWindowPosition = setWindowPosition;
|
|
38
|
+
exports.waitForWindow = waitForWindow;
|
|
39
|
+
const node_child_process_1 = require("node:child_process");
|
|
40
|
+
const promises_1 = require("node:fs/promises");
|
|
41
|
+
const node_os_1 = require("node:os");
|
|
42
|
+
const node_path_1 = require("node:path");
|
|
43
|
+
const node_util_1 = require("node:util");
|
|
44
|
+
const cons = __importStar(require("./console"));
|
|
45
|
+
const execAsync = (0, node_util_1.promisify)(node_child_process_1.exec);
|
|
46
|
+
// Gets the window position for a process by PID using PowerShell
|
|
47
|
+
async function getWindowPosition(pid) {
|
|
48
|
+
if (process.platform !== "win32") {
|
|
49
|
+
throw new Error(`Platform ${process.platform} is not supported for getWindowPosition.`);
|
|
50
|
+
}
|
|
51
|
+
const psScript = `
|
|
52
|
+
Add-Type @"
|
|
53
|
+
using System;
|
|
54
|
+
using System.Runtime.InteropServices;
|
|
55
|
+
public class Win32 {
|
|
56
|
+
[DllImport("user32.dll")]
|
|
57
|
+
public static extern IntPtr GetForegroundWindow();
|
|
58
|
+
|
|
59
|
+
[DllImport("user32.dll")]
|
|
60
|
+
public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
|
|
61
|
+
|
|
62
|
+
[DllImport("user32.dll")]
|
|
63
|
+
[return: MarshalAs(UnmanagedType.Bool)]
|
|
64
|
+
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
|
|
65
|
+
|
|
66
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
67
|
+
public struct RECT {
|
|
68
|
+
public int Left;
|
|
69
|
+
public int Top;
|
|
70
|
+
public int Right;
|
|
71
|
+
public int Bottom;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
[DllImport("user32.dll")]
|
|
75
|
+
[return: MarshalAs(UnmanagedType.Bool)]
|
|
76
|
+
public static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
|
|
77
|
+
|
|
78
|
+
public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
|
|
79
|
+
}
|
|
80
|
+
"@
|
|
81
|
+
|
|
82
|
+
$targetPid = ${pid}
|
|
83
|
+
$result = $null
|
|
84
|
+
|
|
85
|
+
[Win32]::EnumWindows({
|
|
86
|
+
param($hwnd, $lParam)
|
|
87
|
+
$procId = 0
|
|
88
|
+
[Win32]::GetWindowThreadProcessId($hwnd, [ref]$procId) | Out-Null
|
|
89
|
+
if ($procId -eq $targetPid) {
|
|
90
|
+
$rect = New-Object Win32+RECT
|
|
91
|
+
if ([Win32]::GetWindowRect($hwnd, [ref]$rect)) {
|
|
92
|
+
$script:result = @{
|
|
93
|
+
x = $rect.Left
|
|
94
|
+
y = $rect.Top
|
|
95
|
+
width = $rect.Right - $rect.Left
|
|
96
|
+
height = $rect.Bottom - $rect.Top
|
|
97
|
+
}
|
|
98
|
+
return $false
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return $true
|
|
102
|
+
}, [IntPtr]::Zero) | Out-Null
|
|
103
|
+
|
|
104
|
+
if ($script:result) {
|
|
105
|
+
$script:result | ConvertTo-Json -Compress
|
|
106
|
+
}
|
|
107
|
+
`;
|
|
108
|
+
const scriptPath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `getwindowpos-${pid}-${Date.now()}.ps1`);
|
|
109
|
+
try {
|
|
110
|
+
await (0, promises_1.writeFile)(scriptPath, psScript, "utf-8");
|
|
111
|
+
const { stdout, stderr } = await execAsync(`powershell -NoProfile -ExecutionPolicy Bypass -File "${scriptPath}"`);
|
|
112
|
+
if (stderr) {
|
|
113
|
+
cons.warning(`PowerShell stderr: ${stderr}`);
|
|
114
|
+
}
|
|
115
|
+
cons.dim(`PowerShell stdout: "${stdout.trim()}"`);
|
|
116
|
+
if (stdout.trim()) {
|
|
117
|
+
const parsed = JSON.parse(stdout.trim());
|
|
118
|
+
return {
|
|
119
|
+
x: parsed.x,
|
|
120
|
+
y: parsed.y,
|
|
121
|
+
width: parsed.width,
|
|
122
|
+
height: parsed.height,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
try {
|
|
128
|
+
await (0, promises_1.unlink)(scriptPath);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// Ignore cleanup errors
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
// Sets the window position for a process by PID using PowerShell
|
|
137
|
+
async function setWindowPosition(pid, placement) {
|
|
138
|
+
if (process.platform !== "win32") {
|
|
139
|
+
throw new Error(`Platform ${process.platform} is not supported for setWindowPosition.`);
|
|
140
|
+
}
|
|
141
|
+
const psScript = `
|
|
142
|
+
Add-Type @"
|
|
143
|
+
using System;
|
|
144
|
+
using System.Runtime.InteropServices;
|
|
145
|
+
public class Win32 {
|
|
146
|
+
[DllImport("user32.dll")]
|
|
147
|
+
[return: MarshalAs(UnmanagedType.Bool)]
|
|
148
|
+
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
|
|
149
|
+
|
|
150
|
+
[DllImport("user32.dll")]
|
|
151
|
+
public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId);
|
|
152
|
+
|
|
153
|
+
[DllImport("user32.dll")]
|
|
154
|
+
[return: MarshalAs(UnmanagedType.Bool)]
|
|
155
|
+
public static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
|
|
156
|
+
|
|
157
|
+
public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
|
|
158
|
+
|
|
159
|
+
public const uint SWP_NOZORDER = 0x0004;
|
|
160
|
+
public const uint SWP_SHOWWINDOW = 0x0040;
|
|
161
|
+
}
|
|
162
|
+
"@
|
|
163
|
+
|
|
164
|
+
$targetPid = ${pid}
|
|
165
|
+
$x = ${placement.x}
|
|
166
|
+
$y = ${placement.y}
|
|
167
|
+
$width = ${placement.width}
|
|
168
|
+
$height = ${placement.height}
|
|
169
|
+
|
|
170
|
+
[Win32]::EnumWindows({
|
|
171
|
+
param($hwnd, $lParam)
|
|
172
|
+
$procId = 0
|
|
173
|
+
[Win32]::GetWindowThreadProcessId($hwnd, [ref]$procId) | Out-Null
|
|
174
|
+
if ($procId -eq $targetPid) {
|
|
175
|
+
[Win32]::SetWindowPos($hwnd, [IntPtr]::Zero, $x, $y, $width, $height, [Win32]::SWP_NOZORDER -bor [Win32]::SWP_SHOWWINDOW) | Out-Null
|
|
176
|
+
return $false
|
|
177
|
+
}
|
|
178
|
+
return $true
|
|
179
|
+
}, [IntPtr]::Zero) | Out-Null
|
|
180
|
+
|
|
181
|
+
Write-Output "success"
|
|
182
|
+
`;
|
|
183
|
+
const scriptPath = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `setwindowpos-${pid}-${Date.now()}.ps1`);
|
|
184
|
+
try {
|
|
185
|
+
await (0, promises_1.writeFile)(scriptPath, psScript, "utf-8");
|
|
186
|
+
const { stderr } = await execAsync(`powershell -NoProfile -ExecutionPolicy Bypass -File "${scriptPath}"`);
|
|
187
|
+
if (stderr) {
|
|
188
|
+
cons.warning(`PowerShell stderr: ${stderr}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
try {
|
|
193
|
+
await (0, promises_1.unlink)(scriptPath);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// Ignore cleanup errors
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
//Waits for a window to appear for the given process ID
|
|
202
|
+
async function waitForWindow(pid, timeoutMs = 5000) {
|
|
203
|
+
if (process.platform !== "win32") {
|
|
204
|
+
throw new Error(`Platform ${process.platform} is not supported for waitForWindow.`);
|
|
205
|
+
}
|
|
206
|
+
const startTime = Date.now();
|
|
207
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
208
|
+
try {
|
|
209
|
+
const position = await getWindowPosition(pid);
|
|
210
|
+
if (position) {
|
|
211
|
+
return true;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
// Window might not exist yet, keep trying
|
|
216
|
+
cons.dim(` Still waiting for window... (${error instanceof Error ? error.message : String(error)})`);
|
|
217
|
+
}
|
|
218
|
+
await new Promise((resolve) => setTimeout(resolve, 30));
|
|
219
|
+
}
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=windowPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windowPosition.js","sourceRoot":"","sources":["../../src/utils/windowPosition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./ticbuild.schema.json",
|
|
3
|
+
// Example manifest for a TIC-80 project
|
|
4
|
+
"project": {
|
|
5
|
+
"name": "example-game",
|
|
6
|
+
"includeDirs": [
|
|
7
|
+
"./src",
|
|
8
|
+
"./include"
|
|
9
|
+
],
|
|
10
|
+
"binDir": "./dist/bin",
|
|
11
|
+
"objDir": "./dist/obj",
|
|
12
|
+
"outputCartName": "example-game.tic",
|
|
13
|
+
},
|
|
14
|
+
"variables": {
|
|
15
|
+
"version": "1.0.0",
|
|
16
|
+
"author": "Example Developer",
|
|
17
|
+
},
|
|
18
|
+
"imports": [
|
|
19
|
+
{
|
|
20
|
+
"name": "maincode",
|
|
21
|
+
"path": "main.lua",
|
|
22
|
+
"kind": "LuaCode",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "graphics",
|
|
26
|
+
"path": "./assets/sprites.tic",
|
|
27
|
+
"kind": "Tic80Cartridge",
|
|
28
|
+
"chunks": [
|
|
29
|
+
"TILES",
|
|
30
|
+
"SFX"
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "music",
|
|
35
|
+
"path": "./assets/song.tic",
|
|
36
|
+
"kind": "Tic80Cartridge",
|
|
37
|
+
"chunks": [
|
|
38
|
+
"WAVEFORMS",
|
|
39
|
+
"MUSIC_PATTERNS",
|
|
40
|
+
"SFX",
|
|
41
|
+
"MUSIC_TRACKS"
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
"assembly": {
|
|
46
|
+
"lua": {
|
|
47
|
+
"minify": true,
|
|
48
|
+
},
|
|
49
|
+
"blocks": [
|
|
50
|
+
{
|
|
51
|
+
"chunks": [
|
|
52
|
+
"CODE"
|
|
53
|
+
],
|
|
54
|
+
"asset": "maincode",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"asset": {
|
|
58
|
+
"import": "graphics",
|
|
59
|
+
"chunks": [
|
|
60
|
+
"TILES",
|
|
61
|
+
"SPRITES"
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"asset": {
|
|
67
|
+
"import": "music",
|
|
68
|
+
"chunks": [
|
|
69
|
+
"WAVEFORMS",
|
|
70
|
+
"MUSIC_PATTERNS",
|
|
71
|
+
"SFX",
|
|
72
|
+
"MUSIC_TRACKS"
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
"buildConfigurations": {
|
|
79
|
+
"debug": {
|
|
80
|
+
"project": {
|
|
81
|
+
"binDir": "./debug/bin",
|
|
82
|
+
"objDir": "./debug/obj",
|
|
83
|
+
},
|
|
84
|
+
"variables": {
|
|
85
|
+
"version": "1.0.0-debug",
|
|
86
|
+
},
|
|
87
|
+
"assembly": {
|
|
88
|
+
"lua": {
|
|
89
|
+
"minify": false,
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
}
|