diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..77a3231 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +dumps/hgr diff --git a/dumps/archon-ii.hgr.bin b/dumps/archon-ii.hgr.bin new file mode 100644 index 0000000..8b0b1ae Binary files /dev/null and b/dumps/archon-ii.hgr.bin differ diff --git a/dumps/archon.hgr.bin b/dumps/archon.hgr.bin new file mode 100644 index 0000000..07884c8 Binary files /dev/null and b/dumps/archon.hgr.bin differ diff --git a/dumps/bards-tale.hgr.bin b/dumps/bards-tale.hgr.bin new file mode 100644 index 0000000..52de34b Binary files /dev/null and b/dumps/bards-tale.hgr.bin differ diff --git a/dumps/hgr.go b/dumps/hgr.go new file mode 100644 index 0000000..8d9ef47 --- /dev/null +++ b/dumps/hgr.go @@ -0,0 +1,102 @@ +package main + +import ( + "errors" + "fmt" + "image" + "image/color" + "image/png" + "io/ioutil" + "log" + "os" +) + +func xyAddr(x int, y int) int { + offset := (y & 7) + row := (y / 8) & 7 + group := y / 64 + yAddr := 0x28*group + 0x80*row + 0x400*offset + return yAddr + x/7 +} + +func addrXy(addr int) (int, int, bool) { + if addr < 0 || addr > 0x1fff { + return 0, 0, false + } + if addr%0x80 >= (0x28 * 3) { + return 0, 0, false + } + + x := ((addr % 0x80) % 0x28) * 7 + + group := (addr % 0x80) / 0x28 + offset := addr / 0x400 + row := (addr - 0x28*group - 0x400*offset) / 0x80 + + y := group*64 + row*8 + offset + + return x, y, true +} + +func run(args []string) error { + if len(args) != 2 { + return errors.New("usage: hgr input output") + } + + input, err := ioutil.ReadFile(args[0]) + if err != nil { + return err + } + + if len(input) != 0x2000 { + return fmt.Errorf("expected to read 0x4000 bytes from file %q; read 0x%04x", args[0], len(input)) + } + + palette := color.Palette{color.Black, color.White} + paletted := image.NewPaletted(image.Rect(0, 0, 560, 192), palette) + _ = paletted + + for addr, val := range input { + x, y, ok := addrXy(addr) + if !ok { + continue + } + x0 := x * 2 + if val&0x80 > 0 { + x0 += 1 + } + for b := 0; b < 7; b++ { + c := color.Black + if val&(1< 0 { + c = color.White + } + paletted.Set(x0+2*b, y, c) + paletted.Set(x0+2*b+1, y, c) + } + } + + f, err := os.Create(args[1]) + if err != nil { + return err + } + + if err := (&png.Encoder{CompressionLevel: png.BestCompression}).Encode(f, paletted); err != nil { + f.Close() + return err + } + + if err := f.Close(); err != nil { + return err + } + + _ = input + + return nil +} + +func main() { + err := run(os.Args[1:]) + if err != nil { + log.Fatal(err) + } +} diff --git a/dumps/lode-runner.hgr.bin b/dumps/lode-runner.hgr.bin new file mode 100644 index 0000000..e522053 --- /dev/null +++ b/dumps/lode-runner.hgr.bin @@ -0,0 +1 @@ +€€€€€€€€€€€€€€€€€¨…€€€€ €€€…€€€€€€Š€€€€€€€€€€€€€O€€€€€€€@€€€€€@@€€€€€€€€€€ÿÿÿðÿÿüŸÿŸüÿÿƒ€ÿ¿ðÿñÿûÿðÿñÿáÿñÿÁÿÿ¿ü¿€€€€€€€€€€€€€€” Õ‚”€…¨Õ€…€€ª…¨ÁªÀªÁªÀŠÕ‚…ŠÔ‚ÔŠ€€€€€€€€€€€€@``gggggggggggdggg€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Ð€€€…€”€€ €€Š”Š€ Ñ Ñ Ñ€…Š…Š…Š…Š€€€€€€€€€€€€pyyyyyyyyyyyyyyyy€€€€€€€€€€€€€€€€€€€€€€€€€€¨”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ªÕ¢ÑªÑ¨ÕŠ€€€€€ª€€ª”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€|€€€€€€€€€€|€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨€€À‚€€€€€€€ŠÀªÐŠÕ Á‚…ªªÔŠ€€€€€€ÀÿŸ€€€€€€ÀÿŸ€€€€€ÿÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€…Š€€€€€€Ð€€€€€…Š€€€€€€€€€€€€€€€€€€€€€€€€€€€€Õª•€€€€€€€ÀªÀªÀ‚ЂժªÁ‚Њ€€€€€€ðÿ€ÿÿÿÃÿÿÿ‡ÿÿÿ€àÿþ‡ü¿þŸþÿÿ¿øÿÿ¿øÿÿÿÿ€€€€€€€€€€€€…Š…Š…Š…Š€ ÑˆÅ‚…Š”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À¢ÁŠÔ€Õ …¨ÁªÐŠ€€€€€€€€€€€€€üÿƒàÿáÿùÿøÿñÿÿ¿€øÿÿŸ€þÏÿ‡ÿÿŸüŸþþÿÿãÿƒ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€þÿ€óÿø¿üŸþÿüÿ€Œ€þÿü¿Àÿóÿáÿãÿ‡ÿÇÿÃÿàøÿ€€€€€€€€€€€€€€€€  cg €FOY?€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨…€€€€ €€€…€€€€€€Š€€€€€€€€€€€€€O€€€€€€€@€€€€€@@€€€€€€€€€€ÿÿÿðÿÿüŸÿÿøÿÿƒ€ÿÿðÿñÿùÿóÿ÷ÿçÿçÿ‡ÿÿŸüÿ€€€€€€€€€€€€€Õ Õ‚Õ •¨Õ •€€ª…¨ÁŠÀªÁªÀŠÕ‚…ŠÔ‚ÔŠ€€€€€€€€€€€€`pscssssssssssspssss€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Ð€€€…€”€€ €€ª…ŠÀªÀªÀªÐ€Ô‚Ô‚…ŠÔ‚€€€€€€€€€€€€pxyyyyyyyyyyyyyyy€€€€€€€€€€€€€€€€€€€€€€€€€€¨”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ªÕ‚Š¨ÕŠ€€€€ÀŠ€€ÀŠ”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨€€À‚€€€€€€€ªÐ Á‚” Á‚Å‚ÅŠ”¨€€€€€€ÀÿŸ€€€€€€ÀÿŸ€€€€Àÿÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€…Š€€€€€€Ð€€€À‚…Š€€€€€€€€€€€€€€€€€€€€€€€€€€€€Õª•€€€€€€€ÀªÀªÀ‚ЂժªÁ‚Њ€€€€€€ðÿ‡€ÿÿÿÃÿÿÿÇÿÿÿ€àÿ‡ÿ‡üŸþþÿÿ¿øÿÿ¿üÿÿÏÿÿ‡€€€€€€€€€€€€…Š…Š…Š…Š€ ÑˆÅ‚…Š”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÀªÐ€Å¢¨”Š…Š”€€€€€€€€€€€€€€üÿƒàÿáÿù¿øÿùÿÿ¿€øÿÿ€þÇÿ‡ÿÿþŸÿÿÿÿãÿƒ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÿÿÿûÿÿ¿üÿÿ¿þÿÿ€þÿüÿÄÿÿÿáÿãÿƒÿÇÿÃÿÿÿøÿ€€€€€€€€€€€€€€€€  f €L€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Š”€€€€ €€€…€€€€€€Š€€€€€€€€€€€€€O€€€€€€€€€€€€€€@€€€€€€€€€€€€þÿ¿àÿÿ‡øþ¿ðÿÿ€ü¿àÿáÿùÿñÿóÿÃÿãÿƒþÿüÿ€€€€€€€€€€€€€€Õ‚” Õ Õ€…¨•€€ª•ªÐ‚Ñ Ñ Ñ‚…Š…Š…Š…Š€€€€€€€€€€€€`psssssssssssssqssss€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Ð€€€…€”€€ €€ª…ŠÀªÀªÀªÐ€Ô‚Ô‚…ŠÔ‚€€€€€€€€€€€€`xyqy{{{xqx{sxyyy€€€€€€€€€€€€€€€€€€€€€€€€€€€¨…Š…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ªÕ‚…Š”¨ÕŠ€€€€À‚€€À‚”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨€€À‚€€€€€€€¨Ð Á‚” Á‚ŀł”¨€€€€€€àÿŸ€€€€€€Àÿ€€€€Àÿÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€…Š€€€€€€Ð€€€À‚…Š€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÀŠ€ŠÀ‚À‚”¨€¨À‚À‚€€€€€€ðÿ‡€ÿÿÿãÿÿÿÇÿÿÿ€ðÿ‡ÿƒüŸÿþÿÿ¿øÿÿŸüÿÿÏÿÿ‡€€€€€€€€€€€€Õ‚ԂԂԊЪЈł”Š”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À‚Ѐި”Š…Š”€€€€€€€€€€€€€€üÿàÿáÿù¿øÿùÿÿŸ€øÿÿ€ÿÇÿƒÿÿþÿÿÿÿóÿƒ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÿÿÿûÿÿ¿þÿÿ¿þÿÿ€þÿüÿçÿÿÿáÿãÿÃÿçÿÃÿÿÿøÿ€€€€€€€€€€€€€€€€3fLL€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Š”€€€€ €€€…€€€€€€Š€€€€€€€€€€€€€G€€€€€€€€€€€€€€@€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÕŠ”¨Õ Õ‚…ª•€€Š•ŠÐ Ñ Ñ Ñ€…Š…Š…Š…Š€€€€€€€€€€€€`pssssssssssssssssss€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Ð€€€…Š”€€ €€ªŠ€Š€Š€ŠÐ€Ð€Ð€…ŠÐ€€€€€€€€€€€€€€€€€€€€€€|€€€€€€€€€€€|€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨”Š…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Š•Š•Š€€€€€€À‚€€À‚”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ €Ð€€€€€€€€¨Ñ Á‚” Á‚…¨Å‚ÔŠ€€€€€€àÿŸ€€€€€€Àÿ€€€€Àÿÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€…Š€€€€€€Ð€€€€€…Š€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€øÿ‡€ÿÿÿãÿÿÿãÿÿÿ€ðÿÇÿƒüŸÿþÿÿ¿øÿÿŸüÿÿÇÿÿ‡€€€€€€€€€€€€€€€€€€€Š€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À‚ЀՀ•¨…Š…ŠÐ‚€€€€€€€€€€€€€üÿàÿñÿü¿øÿùÿÿŸ€üÿÿ€ÿÇÿÃÿÏÿþÿ‡ÿÿÿñÿƒ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÿÿÿùÿÿ¿þÿÿ¿þÿÿ‡€þ¿øÿçÿÿÿàÿãÿÃÿãÿãÿÿÿøÿ€€€€€€€€€€€€€€€€0cCF€€€€€€€€€€€€€€€€€€€€€€€€€€€€”€€€€€…€€€€Š”€€€€ €€€…€€€€€€Š€€€€€€€€€€€€@dCsscGsCccw€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€”ª”ª”€ÅŠÅŠ…€€Š”ŠÐ Ñ ÑªÐ€…Š…Š…Š…Š€€€€€€€€€€€€`pssssssssssssscsssss€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À‚€ ŠÐ€€¨€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€|€€€€€€€€€€€|€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨”Š…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ŠÔª…Š€€€€€€À‚€€À‚”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ €Ð€€€€€€€€ Ñ Á‚” Á‚…ªÅ‚ÔŠ€€€€€€àÿ€€€€€€Àÿ€€€€Àÿÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€…ŠÔ‚…ŠÔŠÀªÀªÁ¢•ª…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€øÿ‡Àÿÿÿóÿÿÿãÿÿÿ€ðÿÿÿƒüŸÿþÿÿ¿øÿÿŸüÿÿÇÿÿƒ€€€€€€€€€€€€€€€€€€€Š€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À‚Ѐ…€Ð¨€Š…Š€Š€€€€€€€€€€€€€üÿðÿðÿü¿üÿüÿ€€üÿÿŸ€ÿçÿÃÿÇÿþÿ‡ÿ€ðÿ€€€€€€€€€€€€€€€0cC€F€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÿÿÿùÿÿŸþÿÿ¿þÿÿ‡€ÿ¿øÿçÿÿÿðÿñÿÃÿãÿáÿÿÿü¿€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€”€€€€€…€€€€Š”€€€€ €€€…€€€€€€Š€€€€€€€€€€€€@`gggggggggg€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€”¨ÕŠ”€…ªÕ‚…€€Š”ŠÐ Ñ ÑªÐ€…Š…Š…Š…Š€€€€€€€€€€€€`qssssssssssssspsssss€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À‚€ ŠÐ€€¨€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€|€€€€€€€€€€€|€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨”Š…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ŠÐªŠ€€€€€€À‚€€À‚”€€€€€€€€€€€€€€€àÿ€€€€€€àÿ€€€€Àÿÿÿ‡€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ €Ð€€€€€€€€ Ñ Á‚” Á‚…ªÅ‚Ô‚€€€€€€àÿ€øÿÿüÿÿüÿ¿€àÿÿ‡þŸÿÿŸþŸüÿüŸàÿÿÇÿÇ€€€€€€€€€€€€…Š…Š…Š…Š€ ÑˆÅ‚…Š”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Àª€€€€€€€€€€€€€€€€€€€€€€€€€øÿƒÀÿÃÿóÿðÿãÿáÿ€ðÿÿÿƒþÿþŸÿŸü¿þŸþ¿øÇÿ€€€€€€€€€€€€€€€€€€€€Š€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À‚Ѐ…€Ð¨€Š…Š€Š€€€€€€€€€€€€€þÿðÿðÿüŸüÿüÿ€€€üÿÿŸ€ÿçÿÃÿÇÿ‡þÏÿÇÿ€ðÿ€€€€€€€€€€€€€€€33fL€fL€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÿÿÿùÿÿŸþÿÿŸþÿÿ‡€ÿ¿øÿãÿÿÿðÿñÿÃÿãÿáÿÿ¿ü¿€€€€€€€€€€€€€€€€€€€€€€@€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€”€€€€€…€€€€Š„€€€€ €€€…€€€€€€Š€€€€€€€€€€€€@`gggggggggg€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ Õ‚”€…¨Õ€…€€Š”ŠÐ Ñ ÑŠÐ€…Š…Š…Š…Š€€€€€€€€€€€€pyyyyyyyyyyyyyy xyyyyy€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À‚€ ÑªÑ€€¨€€€€€¨€€¨€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€|€€€€€€€€€€€|€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨”Š…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨ÀªÀ‚€€€€€€€Š€ŠÐŠÕ Á‚…¨€¨Ð‚€€€€€€ðÿŸ€€€€€€ðÿŸ€€€€àÿÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ €Ð€€€€€€€€ Ñ Á‚” Á‚Å‚Å‚” €€€€€€àÿ€þÿÿƒþÿÿþÿÿ€àÿþ‡ÿ¿þŸþßÿ¿øÿþŸðÿÿçÿ€€€€€€€€€€…Š…Š…Š…Š€ ÑˆÅ‚…Š”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À¢€€€€€€€€Š€€€€€€€€€€€€€€€øÿƒÀÿãÿñÿðÿóÿðÿ€øÿÿÿþÿ‡ÿŸÿŸüŸþŸþŸüçÿ‡€€€€€€€€€€€€€€€€€€€Ô‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À‚ЀԠ• …Š…¨Ô‚€€€€€€€€€€€€€þÿ€ðÿðÿüŸüÿüÿ€€€üÿþ¿ÀÿãÿÃÿÇÿ‡ÿÏÿÇÿ‡€ðÿ€€€€€€€€€€€€€€€  3f €fL€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ÿÿÿùÿÿŸþÿÿŸþÿÿ‡€ÿ¿øÿóÿÿÿðÿñÿÁÿóÿÁÿÿ¿ü¿€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€„ Õ‚€¨Õ€„€€Š… Š€ªŠ€ŠÕ€…ŠÐ€ÐŠ€€€€€€€€€€€€@`ggggggggggggggggg€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Ð€Õ€…€” • €€Š”Š Ñ Ñ€Ñ€…Š…Š…Š…Š€€€€€€€€€€€€pyyyyyyyyyyyyyyyyyyyy€€€€€€€€€€€€€€€€€€€€€€€€€€¨…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À‚€ ÑªÑ€€¨€€€€€ª€€ª€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€|€€€€€€€€€€€|€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨…¨…€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€¨€€À‚€€€€€€€ŠÀªÐŠÕ Á‚…ªªÐŠ€€€€€€ÀÿŸ€€€€€€ÀÿŸ€€€€€ÿÿÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Õ‚€€€€€€Àª€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Õª•€€€€€€€€¨Ñ Á‚Ô Á‚Å‚Å‚”¨€€€€€€ðÿ€þÿÿƒÿÿÿ‡ÿÿÿ€àÿþ‡ü¿þŸþßÿ¿øÿþ¿øÿÿÿÿ€€€€€€€€€€€€…Š…Š…Š…Š€ ÑˆÅ‚…Š”€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À¢€€€€€€€€Š€€€€€€€€€€€€€€€øÿƒÀÿãÿñÿøÿóÿð¿€øÿÿ¿€þÏÿ‡ÿÿŸüŸþþŸüãÿ‡€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€þÿ€òÿø¿üŸüÿü¿€ˆ€þÿü¿Àÿóÿáÿçÿ‡ÿÇÿÇÿ‡Àøÿ€€€€€€€€€€€€€€€  3F€f O€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~g€€€€€€€@€€€€€`@€€€€€€€€€€ÿÿÿøÿÿŸþ¿ÿŸüÿÿƒ€ÿ¿ðÿóÿÿÿðÿñÿáÿñÿÁÿÿ¿ü¿€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ \ No newline at end of file diff --git a/dumps/rescue-raiders-pic.hgr.bin b/dumps/rescue-raiders-pic.hgr.bin new file mode 100644 index 0000000..2aac34c Binary files /dev/null and b/dumps/rescue-raiders-pic.hgr.bin differ diff --git a/dumps/rescue-raiders-words.hgr.bin b/dumps/rescue-raiders-words.hgr.bin new file mode 100644 index 0000000..a8cdda7 Binary files /dev/null and b/dumps/rescue-raiders-words.hgr.bin differ diff --git a/dumps/rescue-raiders-words.png b/dumps/rescue-raiders-words.png new file mode 100644 index 0000000..83208bc Binary files /dev/null and b/dumps/rescue-raiders-words.png differ diff --git a/images/archon-ii.png b/images/archon-ii.png index 99d4926..9c904d7 100644 Binary files a/images/archon-ii.png and b/images/archon-ii.png differ diff --git a/images/archon.png b/images/archon.png index 40e09cc..6a4cd4d 100644 Binary files a/images/archon.png and b/images/archon.png differ diff --git a/images/bards-tale.png b/images/bards-tale.png new file mode 100644 index 0000000..0322931 Binary files /dev/null and b/images/bards-tale.png differ diff --git a/images/dazzledraw-flower.png b/images/dazzledraw-flower.png new file mode 100644 index 0000000..71c5492 Binary files /dev/null and b/images/dazzledraw-flower.png differ diff --git a/images/lode-runner.png b/images/lode-runner.png index 17eb0e6..6b83545 100644 Binary files a/images/lode-runner.png and b/images/lode-runner.png differ diff --git a/images/rescue-raiders-pic.png b/images/rescue-raiders-pic.png new file mode 100644 index 0000000..d608dea Binary files /dev/null and b/images/rescue-raiders-pic.png differ diff --git a/images/rescue-raiders-words.png b/images/rescue-raiders-words.png new file mode 100644 index 0000000..21b647b Binary files /dev/null and b/images/rescue-raiders-words.png differ diff --git a/index.html b/index.html index 159c5fa..3f93934 100644 --- a/index.html +++ b/index.html @@ -187,12 +187,16 @@ async function setupScreenView() { const images = [ - ["images/airheart-560x192.png", "Airheart", true ], - ["images/battle-chess.png", "Battle Chess", true ], - ["images/archon.png", "Archon", false], - ["images/archon-ii.png", "Archon II", true ], - ["images/lode-runner.png", "Lode Runner", true ], - ["images/marty-reader.png", "Marty's Family Reader", true ], + ["images/airheart-560x192.png", "Airheart", true ], + ["images/battle-chess.png", "Battle Chess", true ], + ["images/archon.png", "Archon", false], + ["images/archon-ii.png", "Archon II", false], + ["images/lode-runner.png", "Lode Runner", false], + ["images/marty-reader.png", "Marty's Family Reader", true ], + ["images/bards-tale.png", "Bard's Tale", false], + ["images/dazzledraw-flower.png", "DazzleDraw flower", true ], + ["images/rescue-raiders-pic.png", "Rescue Raiders (a)", false], + ["images/rescue-raiders-words.png", "Rescue Raiders (b)", false], ]; const image1 = await screenEmu.loadImage("images/airheart-560x192.png"); @@ -205,8 +209,8 @@ const imsel = document.getElementById('input-image'); for (let i = 0; i < images.length; i++) { - const image = await screenEmu.loadImage(images[i][0]); - images[i].push(image); + const image = await screenEmu.loadImage(images[i][0]); + images[i].push(image); const option = document.createElement("option"); option.text = images[i][1]; option.value = i; @@ -222,13 +226,13 @@ sv.displayConfiguration = displayConfig; update = () => { - updateDisplayConfig(displayConfig); - sv.displayConfiguration = displayConfig; - sv.vsync(); + updateDisplayConfig(displayConfig); + sv.displayConfiguration = displayConfig; + sv.vsync(); } for (const elem of document.getElementsByClassName('update')) { - elem.onchange = update; + elem.onchange = update; } updateImage = () => { @@ -245,10 +249,10 @@ imsel.onchange = updateImage; document.getElementById('reset').onclick = () => { - setTimeout(() => { - update(); - updateImage(); - }, 0); + setTimeout(() => { + update(); + updateImage(); + }, 0); } // sv.freeOpenGL();