mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-24 16:01:26 +00:00
implement JFIFResource
This commit is contained in:
parent
2f970810d4
commit
3301e7cfd7
2 changed files with 37 additions and 14 deletions
8
Makefile
8
Makefile
|
@ -1002,11 +1002,9 @@ $(BUILD_DIR)/assets/%.u8.inc.c: $(EXTRACTED_DIR)/assets/%.u8.bin
|
||||||
@echo // From file://`realpath $<` >$@
|
@echo // From file://`realpath $<` >$@
|
||||||
tools/assets/bin2c/bin2c u8 <$< >>$@
|
tools/assets/bin2c/bin2c u8 <$< >>$@
|
||||||
|
|
||||||
$(BUILD_DIR)/assets/%.jpg.inc.c: assets/%.jpg
|
$(BUILD_DIR)/assets/%.u64.jpg.inc.c: $(EXTRACTED_DIR)/assets/%.u64.jpg
|
||||||
$(ZAPD) bren -eh -i $< -o $@
|
@echo // From file://`realpath $<` >$@
|
||||||
|
tools/assets/bin2c/bin2c u64 <$< >>$@
|
||||||
$(BUILD_DIR)/assets/%.jpg.inc.c: $(EXTRACTED_DIR)/assets/%.jpg
|
|
||||||
$(ZAPD) bren -eh -i $< -o $@
|
|
||||||
|
|
||||||
# Audio
|
# Audio
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ if TYPE_CHECKING:
|
||||||
from ..extase import (
|
from ..extase import (
|
||||||
Resource,
|
Resource,
|
||||||
File,
|
File,
|
||||||
BinaryBlobResource,
|
RESOURCE_PARSE_SUCCESS,
|
||||||
)
|
)
|
||||||
from ..extase.cdata_resources import (
|
from ..extase.cdata_resources import (
|
||||||
CDataResource,
|
CDataResource,
|
||||||
|
@ -242,6 +242,35 @@ cdata_ext_RoomShapeImageBase = CDataExt_Struct(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class JFIFResource(Resource):
|
||||||
|
def __init__(self, file, range_start, name):
|
||||||
|
super().__init__(file, range_start, range_start + 320 * 240 * 2, name)
|
||||||
|
|
||||||
|
def try_parse_data(self, memory_context):
|
||||||
|
return RESOURCE_PARSE_SUCCESS
|
||||||
|
|
||||||
|
needs_build = True
|
||||||
|
extracted_path_suffix = ""
|
||||||
|
|
||||||
|
def get_filename_stem(self):
|
||||||
|
return f"{self.name}.u64.jpg"
|
||||||
|
|
||||||
|
def write_extracted(self, memory_context):
|
||||||
|
# TODO trim zeros at the end of the data
|
||||||
|
self.extract_to_path.write_bytes(
|
||||||
|
self.file.data[self.range_start : self.range_end]
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_c_declaration_base(self):
|
||||||
|
return f"u64 {self.symbol_name}[SCREEN_WIDTH * SCREEN_HEIGHT * G_IM_SIZ_16b_BYTES / sizeof(u64)]"
|
||||||
|
|
||||||
|
def get_c_reference(self, resource_offset: int):
|
||||||
|
if resource_offset == 0:
|
||||||
|
return f"&{self.symbol_name}"
|
||||||
|
else:
|
||||||
|
raise ValueError
|
||||||
|
|
||||||
|
|
||||||
class RoomShapeImageSingleResource(CDataResource):
|
class RoomShapeImageSingleResource(CDataResource):
|
||||||
def report_source(resource, memory_context: "MemoryContext", v):
|
def report_source(resource, memory_context: "MemoryContext", v):
|
||||||
assert isinstance(v, int)
|
assert isinstance(v, int)
|
||||||
|
@ -249,12 +278,10 @@ class RoomShapeImageSingleResource(CDataResource):
|
||||||
memory_context.report_resource_at_segmented(
|
memory_context.report_resource_at_segmented(
|
||||||
resource,
|
resource,
|
||||||
address,
|
address,
|
||||||
# TODO JFIFResource or something
|
JFIFResource,
|
||||||
BinaryBlobResource,
|
lambda file, offset: JFIFResource(
|
||||||
lambda file, offset: BinaryBlobResource(
|
|
||||||
file,
|
file,
|
||||||
offset,
|
offset,
|
||||||
offset + 320 * 240 * 2,
|
|
||||||
f"{resource.name}_{address:08X}_JFIF",
|
f"{resource.name}_{address:08X}_JFIF",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
@ -304,12 +331,10 @@ class RoomShapeImageMultiBgEntryArrayResource(CDataArrayNamedLengthResource):
|
||||||
memory_context.report_resource_at_segmented(
|
memory_context.report_resource_at_segmented(
|
||||||
resource,
|
resource,
|
||||||
address,
|
address,
|
||||||
# TODO JFIFResource or something
|
JFIFResource,
|
||||||
BinaryBlobResource,
|
lambda file, offset: JFIFResource(
|
||||||
lambda file, offset: BinaryBlobResource(
|
|
||||||
file,
|
file,
|
||||||
offset,
|
offset,
|
||||||
offset + 320 * 240 * 2,
|
|
||||||
f"{resource.name}_{address:08X}_JFIF",
|
f"{resource.name}_{address:08X}_JFIF",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue