initial commit

This commit is contained in:
Randy Thiemann 2023-10-10 10:32:24 +02:00
commit b29f44c1c0
226 changed files with 15377 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
/bin/
/obj/
/dep/
/res/

18
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,18 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "emulicious-debugger",
"request": "launch",
"name": "Launch in Emulicious",
"emuliciousPath": "${workspaceFolder}\\tools\\emulicious.exe",
"program": "${workspaceFolder}\\bin\\out.gb",
"port": 58870,
"stopOnEntry": false,
"preLaunchTask": "buildrom"
}
]
}

10
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,10 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "buildrom",
"type": "shell",
"command": "make"
}
]
}

143
Makefile Normal file
View File

@ -0,0 +1,143 @@
.SUFFIXES:
################################################
# #
# CONSTANT DEFINITIONS #
# #
################################################
# Directory constants
BINDIR := bin
OBJDIR := obj
DEPDIR := dep
# Program constants
ifneq ($(strip $(shell which rm)),)
# POSIX OSes
RM_RF := rm -rf
MKDIR_P := mkdir -p
PY :=
filesize = printf 'NB_PB$2_BLOCKS equ ((%u) + $2 - 1) / $2\n' "`wc -c <$1`"
else
# Windows outside of a POSIX env (Cygwin, MSYS2, etc.)
# We need Powershell to get any sort of decent functionality
$(warning Powershell is required to get basic functionality)
RM_RF := -del /q
MKDIR_P := -mkdir
PY := python
filesize = powershell Write-Output $$('NB_PB$2_BLOCKS equ ' + [string] [int] (([IO.File]::ReadAllBytes('$1').Length + $2 - 1) / $2))
endif
# Shortcut if you want to use a local copy of RGBDS
RGBDS :=
RGBASM := $(RGBDS)rgbasm
RGBLINK := $(RGBDS)rgblink
RGBFIX := $(RGBDS)rgbfix
RGBGFX := $(RGBDS)rgbgfx
ROM = $(BINDIR)/$(ROMNAME).$(ROMEXT)
# Argument constants
INCDIRS = src/ src/include/
WARNINGS = all extra
ASFLAGS = -p $(PADVALUE) $(addprefix -i,$(INCDIRS)) $(addprefix -W,$(WARNINGS))
LDFLAGS = -p $(PADVALUE)
FIXFLAGS = -p $(PADVALUE) -v -i "$(GAMEID)" -k "$(LICENSEE)" -l $(OLDLIC) -m $(MBC) -n $(VERSION) -r $(SRAMSIZE) -t $(TITLE)
# The list of "root" ASM files that RGBASM will be invoked on
SRCS = $(wildcard src/*.asm)
## Project-specific configuration
# Use this to override the above
include project.mk
################################################
# #
# TARGETS #
# #
################################################
# `all` (Default target): build the ROM
all: $(ROM)
.PHONY: all
# `clean`: Clean temp and bin files
clean:
$(RM_RF) $(BINDIR)
$(RM_RF) $(OBJDIR)
$(RM_RF) $(DEPDIR)
$(RM_RF) res
.PHONY: clean
# `rebuild`: Build everything from scratch
# It's important to do these two in order if we're using more than one job
rebuild:
$(MAKE) clean
$(MAKE) all
.PHONY: rebuild
################################################
# #
# RESOURCE FILES #
# #
################################################
# By default, asset recipes convert files in `res/` into other files in `res/`
# This line causes assets not found in `res/` to be also looked for in `src/res/`
# "Source" assets can thus be safely stored there without `make clean` removing them
VPATH := src
res/%.1bpp: res/%.png
@$(MKDIR_P) $(@D)
$(RGBGFX) -d 1 -o $@ $<
# Define how to compress files using the PackBits16 codec
# Compressor script requires Python 3
res/%.pb16: res/% src/tools/pb16.py
@$(MKDIR_P) $(@D)
$(PY) src/tools/pb16.py $< res/$*.pb16
res/%.pb16.size: res/%
@$(MKDIR_P) $(@D)
$(call filesize,$<,16) > res/$*.pb16.size
# Define how to compress files using the PackBits8 codec
# Compressor script requires Python 3
res/%.pb8: res/% src/tools/pb8.py
@$(MKDIR_P) $(@D)
$(PY) src/tools/pb8.py $< res/$*.pb8
res/%.pb8.size: res/%
@$(MKDIR_P) $(@D)
$(call filesize,$<,8) > res/$*.pb8.size
###############################################
# #
# COMPILATION #
# #
###############################################
# How to build a ROM
$(BINDIR)/%.$(ROMEXT) $(BINDIR)/%.sym $(BINDIR)/%.map: $(patsubst src/%.asm,$(OBJDIR)/%.o,$(SRCS))
@$(MKDIR_P) $(@D)
$(RGBASM) $(ASFLAGS) -o $(OBJDIR)/build_date.o src/res/build_date.asm
$(RGBLINK) $(LDFLAGS) -m $(BINDIR)/$*.map -n $(BINDIR)/$*.sym -o $(BINDIR)/$*.$(ROMEXT) $^ $(OBJDIR)/build_date.o \
&& $(RGBFIX) -v $(FIXFLAGS) $(BINDIR)/$*.$(ROMEXT)
# `.mk` files are auto-generated dependency lists of the "root" ASM files, to save a lot of hassle.
# Also add all obj dependencies to the dep file too, so Make knows to remake it
# Caution: some of these flags were added in RGBDS 0.4.0, using an earlier version WILL NOT WORK
# (and produce weird errors)
$(OBJDIR)/%.o $(DEPDIR)/%.mk: src/%.asm
@$(MKDIR_P) $(patsubst %/,%,$(dir $(OBJDIR)/$* $(DEPDIR)/$*))
$(RGBASM) $(ASFLAGS) -M $(DEPDIR)/$*.mk -MG -MP -MQ $(OBJDIR)/$*.o -MQ $(DEPDIR)/$*.mk -o $(OBJDIR)/$*.o $<
ifneq ($(MAKECMDGOALS),clean)
-include $(patsubst src/%.asm,$(DEPDIR)/%.mk,$(SRCS))
endif
# Catch non-existent files
# KEEP THIS LAST!!
%:
@false

19
designnotes.md Normal file
View File

@ -0,0 +1,19 @@
# Tile layout
Note: All tiles are 8x7 so that the entire tetrion fits on the screen.
Tile 0, 1 are all black and all white for lockflash and such.
Tiles 2, 3, 4, 5, 6 are the edges of the tetrion.
Tile 7 is the background of the tetrion.
Tile 8 is a horizontal line for the level state
Tile 9 is a pointer
Tiles 10, 11, 12, 13, 14, 15, 16 are IZSJLOT in their falling state.
Tiles 17, 18, 19, 20, 21, 22, 23 are IZSJLOT in their locked state.
Tiles 24, 25, 26, 27, 28, 29, 30 are IZSJLOT in their locking state 1.
Tiles 31, 32, 33, 34, 35, 36, 37 are IZSJLOT in their locking state 2.
Tiles 38, 39, 40, 41, 42, 43, 44 are IZSJLOT in their locking state 3.
Tiles 45, 46, 47, 48, 49, 50, 51 are IZSJLOT in their locking state 4.
Tiles 52, 53, 54, 55, 56, 57, 58 are IZSJLOT in their locking state 5.
Tiles 59, 60, 61, 62, 63, 64, 65 are IZSJLOT in their locking state 6.
Tiles 66-73 are for section drawing
Tiles 74-109 are the font, dark.
Tiles 110-119 are the numbers, light.
Tiles 120-127 -----------------------------------------------

15
project.mk Normal file
View File

@ -0,0 +1,15 @@
PADVALUE := 0xFF
VERSION := 0
GAMEID := DTGM
TITLE := DMGTRIS
LICENSEE := NR
OLDLIC := 0x33
MBC := 0x00
SRAMSIZE := 0x00
ROMNAME := out
ROMEXT := gb
ASFLAGS += -h
LDFLAGS += -d
ASFLAGS += -v
LDFLAGS += -v
LDFLAGS += -t

8
src/header.asm Normal file
View File

@ -0,0 +1,8 @@
; *****************************************************************************
; * *
; * Cartridge Header. *
; * *
; *****************************************************************************
SECTION "Header", ROM0[$100]
jp MainEntryPoint
ds $150 - @, 0 ; RGBFIX will fill in the header.

100
src/include/globals.asm Normal file
View File

@ -0,0 +1,100 @@
; *****************************************************************************
; * *
; * Libraries and Defines *
; * *
; *****************************************************************************
INCLUDE "hardware.inc"
INCLUDE "structs.asm"
; *****************************************************************************
; * *
; * Game Variables *
; * *
; *****************************************************************************
SECTION "General Game Variables", WRAM0
wLCDCCtr:: db
wEvenFrame:: db
wField:: ds 200
wRNGSeed:: ds 4
wFill:: db
SECTION "Important Game Variables", HRAM
hUnused:: ds 126
; *****************************************************************************
; * *
; * Convenience Defines *
; * *
; *****************************************************************************
DEF PALETTE_REGULAR EQU %11100100
DEF PALETTE_INVERTED EQU %00011011
DEF PALETTE_MONO_0 EQU %11111111
DEF PALETTE_MONO_1 EQU %10101010
DEF PALETTE_MONO_2 EQU %01010101
DEF PALETTE_MONO_3 EQU %00000000
DEF PALETTE_DARKER_0 EQU %11100100
DEF PALETTE_DARKER_1 EQU %11111001
DEF PALETTE_DARKER_2 EQU %11111110
DEF PALETTE_DARKER_3 EQU %11111111
DEF PALETTE_LIGHTER_0 EQU %11100100
DEF PALETTE_LIGHTER_1 EQU %10010000
DEF PALETTE_LIGHTER_2 EQU %01000000
DEF PALETTE_LIGHTER_3 EQU %00000000
DEF FIELD_ROW_1 EQU $9800+(0*32)+1
DEF FIELD_ROW_2 EQU $9800+(1*32)+1
DEF FIELD_ROW_3 EQU $9800+(2*32)+1
DEF FIELD_ROW_4 EQU $9800+(3*32)+1
DEF FIELD_ROW_5 EQU $9800+(4*32)+1
DEF FIELD_ROW_6 EQU $9800+(5*32)+1
DEF FIELD_ROW_7 EQU $9800+(6*32)+1
DEF FIELD_ROW_8 EQU $9800+(7*32)+1
DEF FIELD_ROW_9 EQU $9800+(8*32)+1
DEF FIELD_ROW_10 EQU $9800+(9*32)+1
DEF FIELD_ROW_11 EQU $9800+(10*32)+1
DEF FIELD_ROW_12 EQU $9800+(11*32)+1
DEF FIELD_ROW_13 EQU $9800+(12*32)+1
DEF FIELD_ROW_14 EQU $9800+(13*32)+1
DEF FIELD_ROW_15 EQU $9800+(14*32)+1
DEF FIELD_ROW_16 EQU $9800+(15*32)+1
DEF FIELD_ROW_17 EQU $9800+(16*32)+1
DEF FIELD_ROW_18 EQU $9800+(17*32)+1
DEF FIELD_ROW_19 EQU $9800+(18*32)+1
DEF FIELD_ROW_20 EQU $9800+(19*32)+1
; *****************************************************************************
; * *
; * Convenience Macros *
; * *
; *****************************************************************************
; Waits for VRAM to be safe to access. (Includes hblank.)
MACRO wait_vram
.waitvram\@
ldh a, [rSTAT]
and STATF_BUSY
jr nz, .waitvram\@
ENDM
; Waits for lcd to be in vblank.
MACRO wait_vblank
.waitvb\@
ldh a, [rSTAT]
and STATF_LCD
cp STATF_VBL
jr nz, .waitvb\@
ENDM
; Waits for lcd to not be in vblank.
MACRO wait_vblank_end
.waitvbe\@
ldh a, [rSTAT]
and STATF_LCD
cp STATF_VBL
jr z, .waitvbe\@
ENDM
; Writes two bytes to a register pair.
MACRO lb
ld \1, (LOW(\2) << 8) | LOW(\3)
ENDM

1113
src/include/hardware.inc Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
SECTION "Hardware Control Functions", ROM0
SetBGPalette::
ldh [rBGP], a
ret
DisableAudio::
xor a, a
ldh [rNR52], a
ret
DisableLCD::
wait_vram
xor a, a
ldh [rLCDC], a
ret
EnableLCD::
ld a, LCDCF_ON | LCDCF_BGON
ldh [rLCDC], a
ret

View File

@ -0,0 +1,54 @@
SECTION "Interrupt Initialization Functions", ROM0
InitializeLCDCInterrupt::
ld a, STATF_LYC
ldh [rSTAT], a
ld a, 6
ldh [rLYC], a
ld a, 0
ldh [rSCY], a
ld a, IEF_STAT
ldh [rIE], a
xor a, a
ldh [rIF], a
ei
ret
SECTION "LCDC Interrupt", ROM0[$0048]
LCDCInterrupt:
push af
push hl
ld hl, rSTAT
LCDCInterrupt_WaitUntilNotBusy:
bit STATB_BUSY, [hl]
jr nz, LCDCInterrupt_WaitUntilNotBusy
; Increment SCY
ldh a, [rSCY]
inc a
ldh [rSCY], a
; Increment LYC by 7
ldh a, [rLYC]
add a, 7
ldh [rLYC], a
; Check our interrupt counter
ld a, [wLCDCCtr]
cp 21
jp nz, LCDCInterrupt_End
ld a, 255
ld [wLCDCCtr], a
ld a, 6
ldh [rLYC], a
ld a, 0
ldh [rSCY], a
LCDCInterrupt_End:
inc a
ld [wLCDCCtr], a
pop hl
pop af
reti

24
src/include/memcpy.asm Normal file
View File

@ -0,0 +1,24 @@
SECTION "Memory Functions", ROM0
; Copies data from de to hl, bc bytes
UnsafeMemCopy::
ld a, [de]
ld [hli], a
inc de
dec bc
ld a, b
or a, c
jp nz, UnsafeMemCopy
ret
; Copies data from de to hl, bc bytes
SafeMemCopy::
wait_vram
ld a, [de]
ld [hli], a
inc de
dec bc
ld a, b
or a, c
jp nz, SafeMemCopy
ret

34
src/include/rng.asm Normal file
View File

@ -0,0 +1,34 @@
section "RNG Functions", ROM0
NextByte::
; Load seed
ld hl,wRNGSeed+3
ld a,[hl-]
ld b,a
ld a,[hl-]
ld c,a
ld a,[hl-]
; Multiply by 0x01010101
add [hl]
ld d,a
adc c
ld c,a
adc b
ld b,a
; Add 0x31415927 and write back
ld a,[hl]
add $27
ld [hl+],a
ld a,d
adc $59
ld [hl+],a
ld a,c
adc $41
ld [hl+],a
ld c,a
ld a,b
adc $31
ld [hl],a
ld b,a
ret

338
src/include/structs.asm Normal file
View File

@ -0,0 +1,338 @@
; MIT License
;
; Copyright (c) 2018-2022 Eldred Habert and contributors
; Originally hosted at https://github.com/ISSOtm/rgbds-structs
;
; Permission is hereby granted, free of charge, to any person obtaining a copy
; of this software and associated documentation files (the "Software"), to deal
; in the Software without restriction, including without limitation the rights
; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
; copies of the Software, and to permit persons to whom the Software is
; furnished to do so, subject to the following conditions:
;
; The above copyright notice and this permission notice shall be included in all
; copies or substantial portions of the Software.
;
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
; SOFTWARE.
DEF STRUCTS_VERSION equs "3.0.1"
MACRO structs_assert
assert (\1), "rgbds-structs {STRUCTS_VERSION} bug. Please report at https://github.com/ISSOtm/rgbds-structs, and share the above stack trace *and* your code there!"
ENDM
; Call with the expected RGBDS-structs version string to ensure your code
; is compatible with the INCLUDEd version of RGBDS-structs.
; Example: `rgbds_structs_version 2.0.0`
MACRO rgbds_structs_version ; version_string
DEF CURRENT_VERSION EQUS STRRPL("{STRUCTS_VERSION}", ".", ",")
; Undefine `EXPECTED_VERSION` if it does not match `CURRENT_VERSION`
DEF EXPECTED_VERSION EQUS STRRPL("\1", ".", ",")
check_ver {EXPECTED_VERSION}, {CURRENT_VERSION}
IF !DEF(EXPECTED_VERSION)
FAIL "rgbds-structs version \1 is required, which is incompatible with current version {STRUCTS_VERSION}"
ENDC
PURGE CURRENT_VERSION, EXPECTED_VERSION
ENDM
; Checks whether trios of version components match.
; Used internally by `rgbds_structs_version`.
MACRO check_ver ; expected major, minor, patch, current major, minor, patch
IF (\1) != (\4) || (\2) > (\5) || (\3) > (\6)
PURGE EXPECTED_VERSION
ENDC
ENDM
; Begins a struct declaration.
MACRO struct ; struct_name
IF DEF(STRUCT_NAME) || DEF(NB_FIELDS)
FAIL "Please close struct definitions using `end_struct`"
ENDC
; Define two internal variables for field definitions
DEF STRUCT_NAME EQUS "\1"
DEF NB_FIELDS = 0
DEF NB_NONALIASES = 0
; Initialize _RS to 0 for defining offset constants
RSRESET
ENDM
; Ends a struct declaration.
MACRO end_struct
; Define the number of fields and size in bytes
DEF {STRUCT_NAME}_nb_fields EQU NB_FIELDS
DEF {STRUCT_NAME}_nb_nonaliases EQU NB_NONALIASES
DEF sizeof_{STRUCT_NAME} EQU _RS
IF DEF(STRUCTS_EXPORT_CONSTANTS)
EXPORT {STRUCT_NAME}_nb_fields, sizeof_{STRUCT_NAME}
ENDC
; Purge the internal variables defined by `struct`
PURGE STRUCT_NAME, NB_FIELDS, NB_NONALIASES
ENDM
; Defines a field of N bytes.
DEF bytes equs "new_field rb,"
DEF words equs "new_field rw,"
DEF longs equs "new_field rl,"
DEF alias equs "new_field rb, 0,"
; Extends a new struct by an existing struct, effectively cloning its fields.
MACRO extends ; struct_type[, sub_struct_name]
IF !DEF(\1_nb_fields)
FAIL "Struct \1 isn't defined!"
ENDC
IF _NARG != 1 && _NARG != 2
FAIL "Invalid number of arguments, expected 1 or 2"
ENDC
FOR FIELD_ID, \1_nb_fields
DEF EXTENDS_FIELD EQUS "\1_field{d:FIELD_ID}"
get_nth_field_info {STRUCT_NAME}, NB_FIELDS
IF _NARG == 1
DEF {STRUCT_FIELD_NAME} EQUS "{{EXTENDS_FIELD}_name}"
ELSE
DEF {STRUCT_FIELD_NAME} EQUS "\2_{{EXTENDS_FIELD}_name}"
ENDC
DEF {STRUCT_FIELD} RB {EXTENDS_FIELD}_size
IF DEF(STRUCTS_EXPORT_CONSTANTS)
EXPORT {STRUCT_FIELD}
ENDC
DEF {STRUCT_NAME}_{{STRUCT_FIELD_NAME}} EQU {STRUCT_FIELD}
DEF {STRUCT_FIELD_SIZE} EQU {EXTENDS_FIELD}_size
DEF {STRUCT_FIELD_TYPE} EQUS "{{EXTENDS_FIELD}_type}"
purge_nth_field_info
DEF NB_FIELDS += 1
IF {EXTENDS_FIELD}_size != 0
DEF NB_NONALIASES += 1
ENDC
PURGE EXTENDS_FIELD
ENDR
ENDM
; Defines EQUS strings pertaining to a struct's Nth field.
; Used internally by `new_field` and `dstruct`.
MACRO get_nth_field_info ; struct_name, field_id
DEF STRUCT_FIELD EQUS "\1_field{d:\2}" ; prefix for other EQUS
DEF STRUCT_FIELD_NAME EQUS "{STRUCT_FIELD}_name" ; field's name
DEF STRUCT_FIELD_TYPE EQUS "{STRUCT_FIELD}_type" ; type ("b", "l", or "l")
DEF STRUCT_FIELD_SIZE EQUS "{STRUCT_FIELD}_size" ; sizeof(type) * nb_el
ENDM
; Purges the variables defined by `get_nth_field_info`.
; Used internally by `new_field` and `dstruct`.
DEF purge_nth_field_info equs "PURGE STRUCT_FIELD, STRUCT_FIELD_NAME, STRUCT_FIELD_TYPE, STRUCT_FIELD_SIZE"
; Defines a field with a given RS type (`rb`, `rw`, or `rl`).
; Used internally by `bytes`, `words`, and `longs`.
MACRO new_field ; rs_type, nb_elems, field_name
IF !DEF(STRUCT_NAME) || !DEF(NB_FIELDS)
FAIL "Please start defining a struct, using `struct`"
ENDC
get_nth_field_info {STRUCT_NAME}, NB_FIELDS
; Set field name
DEF {STRUCT_FIELD_NAME} EQUS "\3"
; Set field offset
DEF {STRUCT_FIELD} \1 (\2)
IF DEF(STRUCTS_EXPORT_CONSTANTS)
EXPORT {STRUCT_FIELD}
ENDC
; Alias this in a human-comprehensible manner
DEF {STRUCT_NAME}_\3 EQU {STRUCT_FIELD}
; Compute field size
DEF {STRUCT_FIELD_SIZE} EQU _RS - {STRUCT_FIELD}
; Set properties
DEF {STRUCT_FIELD_TYPE} EQUS STRSUB("\1", 2, 1)
purge_nth_field_info
DEF NB_FIELDS += 1
IF \2 != 0
DEF NB_NONALIASES += 1
ENDC
ENDM
; Strips whitespace from the left of a string.
; Used internally by `dstruct`.
MACRO lstrip ; string_variable
FOR START_POS, 1, STRLEN("{\1}") + 1
IF !STRIN(" \t", STRSUB("{\1}", START_POS, 1))
BREAK
ENDC
ENDR
REDEF \1 EQUS STRSUB("{\1}", START_POS)
PURGE START_POS
ENDM
; Allocates space for a struct in memory.
; If no further arguments are supplied, the space is allocated using `ds`.
; Otherwise, the data is written to memory using the appropriate types.
; For example, a struct defined with `bytes 1, Field1` and `words 3, Field2`
; could take four extra arguments, one byte then three words.
; Each such argument would have an equal sign between the name and value.
MACRO dstruct ; struct_type, instance_name[, ...]
IF !DEF(\1_nb_fields)
FAIL "Struct \1 isn't defined!"
ELIF _NARG != 2 && _NARG != 2 + \1_nb_nonaliases
; We must have either a RAM declaration (no data args)
; or a ROM one (RAM args + data args)
FAIL STRFMT("Expected 2 or %u args to `dstruct`, but got {d:_NARG}", 2 + \1_nb_nonaliases)
ENDC
; RGBASM always expands macro args, so `IF _NARG > 2 && STRIN("\3", "=")`
; would error out when there are only two args.
; Therefore, the condition is checked here (we can't nest the `IF`s over
; there because that would require a duplicated `ELSE`).
DEF IS_NAMED_INSTANTIATION = 0
IF _NARG > 2
REDEF IS_NAMED_INSTANTIATION = STRIN("\3", "=")
ENDC
IF IS_NAMED_INSTANTIATION
; This is a named instantiation; translate that to an ordered one.
; This is needed because data has to be laid out in order, so some translation is needed anyway.
; And finally, I believe it's better to re-use the existing code at the cost of a single nested macro.
FOR ARG_NUM, 3, _NARG + 1
; Remove leading whitespace to obtain something like ".name=value"
; (this enables a simple check for starting with a period)
REDEF CUR_ARG EQUS "\<ARG_NUM>"
lstrip CUR_ARG
; Ensure that the argument has a name and a value,
; separated by an equal sign
DEF EQUAL_POS = STRIN("{CUR_ARG}", "=")
IF !EQUAL_POS
FAIL "\"{CUR_ARG}\" is not a named initializer!"
ELIF STRCMP(STRSUB("{CUR_ARG}", 1, 1), ".")
FAIL "\"{CUR_ARG}\" does not start with a period!"
ENDC
; Find out which field the current argument is
FOR FIELD_ID, \1_nb_fields
IF !STRCMP(STRSUB("{CUR_ARG}", 2, EQUAL_POS - 2), "{\1_field{d:FIELD_ID}_name}")
IF \1_field{d:FIELD_ID}_size == 0
FAIL "Cannot initialize an alias"
ENDC
BREAK ; Match found!
ENDC
ENDR
IF FIELD_ID == \1_nb_fields
FAIL "\"{CUR_ARG}\" does not match any member of \1"
ELIF DEF(FIELD_{d:FIELD_ID}_INITIALIZER)
FAIL "\"{CUR_ARG}\" conflicts with \"{FIELD_{d:FIELD_ID}_ARG}\""
ENDC
; Save the argument to report in case a later argument conflicts with it
DEF FIELD_{d:FIELD_ID}_ARG EQUS "{CUR_ARG}"
; Escape any commas in a multi-byte argument initializer so it can
; be passed as one argument to the nested ordered instantiation
DEF FIELD_{d:FIELD_ID}_INITIALIZER EQUS STRRPL(STRSUB("{CUR_ARG}", EQUAL_POS + 1), ",", "\\,")
ENDR
PURGE ARG_NUM, CUR_ARG
; Now that we matched each named initializer to their order,
; invoke the macro again but without names
DEF ORDERED_ARGS EQUS "\1, \2"
FOR FIELD_ID, \1_nb_fields
IF \1_field{d:FIELD_ID}_size != 0
REDEF ORDERED_ARGS EQUS "{ORDERED_ARGS}, {FIELD_{d:FIELD_ID}_INITIALIZER}"
PURGE FIELD_{d:FIELD_ID}_ARG, FIELD_{d:FIELD_ID}_INITIALIZER
ENDC
ENDR
PURGE FIELD_ID
; Do the nested ordered instantiation
dstruct {ORDERED_ARGS} ; purges IS_NAMED_INSTANTIATION
PURGE ORDERED_ARGS
ELSE
; This is an ordered instantiation, not a named one.
; Define the struct's root label
\2::
IF DEF(STRUCT_SEPARATOR)
DEF DSTRUCT_SEPARATOR equs "{STRUCT_SEPARATOR}"
ELSE
DEF DSTRUCT_SEPARATOR equs "_"
ENDC
; Define each field
DEF ARG_NUM = 3
FOR FIELD_ID, \1_nb_fields
get_nth_field_info \1, FIELD_ID
; Define the label for the field
\2_{{STRUCT_FIELD_NAME}}::
IF STRUCT_FIELD_SIZE != 0 ; Skip aliases
; Declare the space for the field
IF ARG_NUM <= _NARG
; ROM declaration; use `db`, `dw`, or `dl`
d{{STRUCT_FIELD_TYPE}} \<ARG_NUM>
REDEF ARG_NUM = ARG_NUM + 1
ENDC
; Add padding as necessary after the provided initializer
; (possibly all of it, especially for RAM use)
IF {STRUCT_FIELD_SIZE} < @ - \2_{{STRUCT_FIELD_NAME}}
FAIL STRFMT("Initializer for %s is %u bytes, expected %u at most", "\2_{{STRUCT_FIELD_NAME}}", @ - \2_{{STRUCT_FIELD_NAME}}, {STRUCT_FIELD_SIZE})
ENDC
ds {STRUCT_FIELD_SIZE} - (@ - \2_{{STRUCT_FIELD_NAME}})
ENDC
purge_nth_field_info
ENDR
PURGE FIELD_ID, ARG_NUM, DSTRUCT_SEPARATOR
; Define instance's properties from struct's
DEF \2_nb_fields EQU \1_nb_fields
DEF sizeof_\2 EQU @ - (\2)
structs_assert sizeof_\1 == sizeof_\2
IF DEF(STRUCTS_EXPORT_CONSTANTS)
EXPORT \2_nb_fields, sizeof_\2
ENDC
PURGE IS_NAMED_INSTANTIATION
ENDC
ENDM
; Allocates space for an array of structs in memory.
; Each struct will have the index appended to its name **as decimal**.
; For example: `dstructs 32, NPC, wNPC` will define `wNPC0`, `wNPC1`, and so on until `wNPC31`.
; This is a change from the previous version of rgbds-structs, where the index was uppercase hexadecimal.
; Does not support data declarations because I think each struct should be defined individually for that purpose.
MACRO dstructs ; nb_structs, struct_type, instance_name
IF _NARG != 3
FAIL "`dstructs` only takes 3 arguments!"
ENDC
FOR STRUCT_ID, \1
dstruct \2, \3{d:STRUCT_ID}
ENDR
PURGE STRUCT_ID
ENDM

126
src/main.asm Normal file
View File

@ -0,0 +1,126 @@
INCLUDE "globals.asm"
INCLUDE "memcpy.asm"
INCLUDE "hardwarectl.asm"
INCLUDE "interrupts.asm"
INCLUDE "res/tiles.inc"
INCLUDE "res/gameplay_map.inc"
SECTION "Code Entry Point", ROM0
MainEntryPoint::
; Turn off LCD during initialization.
call DisableLCD
call DisableAudio
; We use a single set of tiles for the entire game, so we copy it at the start.
ld de, Tiles
ld hl, $9000
ld bc, TilesEnd - Tiles
call UnsafeMemCopy
; The tilemap is just for testing for now.
ld de, GameplayTilemap
ld hl, $9800
ld bc, GameplayTilemapEnd - GameplayTilemap
call UnsafeMemCopy
ld a, PALETTE_REGULAR
call SetBGPalette
call InitializeVariables
call InitializeLCDCInterrupt
; And turn it back on before we start.
call EnableLCD
; Make sure the first game loop starts just like all the future ones.
wait_vblank
wait_vblank_end
GameLoop::
call GetInput
call HandleTimers
ld bc, 20*10
ld hl, wField
: ld a, [wFill]
ld [hl+], a
dec bc
ld a, b
or a, c
jp nz, :-
ld a, [wFill]
inc a
ld [wFill], a
; Handle gameplay here
; TODO
GameLoopEnd:
wait_vblank
call BlitField
jp GameLoop
; *****************************************************************************
; * *
; * Functions *
; * *
; *****************************************************************************
SECTION "Functions", ROM0
InitializeVariables:
xor a, a
ld [wLCDCCtr], a
ret
BlitField:
; The first 16 rows can be blitted without checking for vram access.
ld de, wField
DEF row = 0
REPT 16
ld hl, FIELD_ROW_1+(32*row)
REPT 10
ld a, [de]
ld [hl+], a
inc de
ENDR
DEF row += 1
ENDR
; The last 4 rows need some care.
REPT 4
ld hl, FIELD_ROW_1+(32*row)
REPT 2
: ldh a, [rSTAT]
and STATF_LCD
cp STATF_HBL
jr z, :-
: ldh a, [rSTAT]
and STATF_LCD
cp STATF_HBL
jr nz, :-
REPT 5
ld a, [de]
ld [hl+], a
inc de
ENDR
ENDR
DEF row += 1
ENDR
ret
GetInput:
ret
HandleTimers:
ld a, [wEvenFrame]
inc a
and 1
ld [wEvenFrame], a
ret

6
src/res/build_date.asm Normal file
View File

@ -0,0 +1,6 @@
SECTION "Build date", ROM0
db "Built "
BuildDate::
db __ISO_8601_UTC__
db 0

BIN
src/res/gameplay.gbm Normal file

Binary file not shown.

24
src/res/gameplay_map.inc Normal file
View File

@ -0,0 +1,24 @@
SECTION "Gameplay Tilemap", ROM0
GameplayTilemap::
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$44,$42,$42,$42,$42,$42,$42,$43, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$57,$4E,$61,$5D,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$48,$42,$42,$42,$42,$42,$42,$47, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$51,$58,$55,$4D,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$48,$42,$42,$42,$42,$42,$42,$47, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$5C,$4C,$58,$5B,$4E,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$48,$42,$42,$42,$42,$42,$42,$47, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$55,$4E,$5F,$4E,$55,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$08,$08,$08,$08,$08,$08,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $02,$07,$07,$07,$07,$07,$07,$07,$07,$07,$07,$03,$49,$01,$01,$01,$01,$01,$01,$49, 0,0,0,0,0,0,0,0,0,0,0,0
DB $05,$04,$04,$04,$04,$04,$04,$04,$04,$04,$04,$06,$46,$42,$42,$42,$42,$42,$42,$45, 0,0,0,0,0,0,0,0,0,0,0,0
GameplayTilemapEnd::

BIN
src/res/tiles.gbr Normal file

Binary file not shown.

259
src/res/tiles.inc Normal file
View File

@ -0,0 +1,259 @@
SECTION "Tile data", ROM0
Tiles::
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $67,$1F,$67,$1F,$67,$1F,$67,$1F
DB $67,$1F,$67,$1F,$67,$1F,$00,$00
DB $E6,$F8,$E6,$F8,$E6,$F8,$E6,$F8
DB $E6,$F8,$E6,$F8,$E6,$F8,$00,$00
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$FF
DB $00,$FF,$FF,$00,$FF,$00,$00,$00
DB $67,$1F,$67,$1F,$67,$1F,$60,$1F
DB $60,$1F,$7F,$00,$7F,$00,$00,$00
DB $E6,$F8,$E6,$F8,$E6,$F8,$06,$F8
DB $06,$F8,$FE,$00,$FE,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$01,$00,$00,$00
DB $00,$00,$00,$00,$00,$FF,$FF,$FF
DB $00,$FF,$00,$00,$00,$00,$00,$00
DB $80,$80,$E0,$E0,$F8,$F8,$FE,$FE
DB $F8,$F8,$E0,$E0,$80,$80,$00,$00
DB $00,$FF,$7E,$99,$66,$BD,$66,$BD
DB $66,$BD,$7E,$99,$00,$FF,$00,$00
DB $00,$FF,$36,$C9,$6C,$93,$5A,$A5
DB $36,$C9,$6C,$93,$00,$FF,$00,$00
DB $00,$FF,$00,$BD,$3C,$81,$00,$81
DB $3C,$81,$00,$BD,$00,$FF,$00,$00
DB $00,$FF,$3C,$C3,$5A,$A5,$7E,$81
DB $5A,$A5,$3C,$C3,$00,$FF,$00,$00
DB $00,$FF,$5A,$A5,$42,$BD,$42,$BD
DB $42,$BD,$5A,$A5,$00,$FF,$00,$00
DB $00,$FF,$7E,$81,$7E,$81,$7E,$81
DB $7E,$81,$7E,$81,$00,$FF,$00,$00
DB $00,$FF,$54,$AB,$2A,$D5,$54,$AB
DB $2A,$D5,$54,$AB,$00,$FF,$00,$00
DB $FF,$FF,$FF,$99,$E7,$BD,$E7,$BD
DB $E7,$BD,$FF,$99,$FF,$FF,$00,$00
DB $FF,$FF,$B7,$C9,$ED,$93,$DB,$A5
DB $B7,$C9,$ED,$93,$FF,$FF,$00,$00
DB $FF,$FF,$81,$BD,$BD,$81,$81,$81
DB $BD,$81,$81,$BD,$FF,$FF,$00,$00
DB $FF,$FF,$BD,$C3,$DB,$A5,$FF,$81
DB $DB,$A5,$BD,$C3,$FF,$FF,$00,$00
DB $FF,$FF,$DB,$A5,$C3,$BD,$C3,$BD
DB $C3,$BD,$DB,$A5,$FF,$FF,$00,$00
DB $FF,$FF,$FF,$81,$FF,$81,$FF,$81
DB $FF,$81,$FF,$81,$FF,$FF,$00,$00
DB $FF,$FF,$D5,$AB,$AB,$D5,$D5,$AB
DB $AB,$D5,$D5,$AB,$FF,$FF,$00,$00
DB $00,$FF,$7E,$99,$66,$BD,$66,$BD
DB $66,$BD,$FE,$BB,$FF,$FF,$00,$00
DB $00,$FF,$36,$C9,$6C,$93,$5A,$A5
DB $36,$C9,$EE,$BB,$FF,$FF,$00,$00
DB $00,$FF,$00,$BD,$3C,$81,$00,$81
DB $3C,$81,$AA,$BF,$FF,$FF,$00,$00
DB $00,$FF,$3C,$C3,$5A,$A5,$7E,$81
DB $5A,$A5,$BE,$EB,$FF,$FF,$00,$00
DB $00,$FF,$5A,$A5,$42,$BD,$42,$BD
DB $42,$BD,$FA,$AF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$81,$7E,$81,$7E,$81
DB $7E,$81,$FE,$AB,$FF,$FF,$00,$00
DB $00,$FF,$54,$AB,$2A,$D5,$54,$AB
DB $2A,$D5,$FE,$AB,$FF,$FF,$00,$00
DB $00,$FF,$7E,$99,$66,$BD,$66,$BD
DB $EE,$BF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$36,$C9,$6C,$93,$5A,$A5
DB $BE,$EB,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$00,$BD,$3C,$81,$00,$81
DB $BE,$AB,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$3C,$C3,$5A,$A5,$7E,$81
DB $FA,$AF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$5A,$A5,$42,$BD,$42,$BD
DB $EA,$BF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$81,$7E,$81,$7E,$81
DB $FE,$AB,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$54,$AB,$2A,$D5,$54,$AB
DB $AA,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$99,$66,$BD,$EE,$BF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$36,$C9,$6C,$93,$FA,$AF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$00,$BD,$3C,$81,$AA,$AB
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$3C,$C3,$5A,$A5,$FE,$AB
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$5A,$A5,$42,$BD,$EA,$BF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$81,$7E,$81,$FE,$AB
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$54,$AB,$2A,$D5,$FE,$AB
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$99,$EE,$BF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$36,$C9,$EE,$BB,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$00,$BD,$BE,$AB,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$3C,$C3,$FA,$AF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$5A,$A5,$EA,$BF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$81,$FE,$AB,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$54,$AB,$AA,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$FE,$BB,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$BE,$EB,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$AA,$BF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$BE,$EB,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$FA,$AF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$FE,$AB,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$FE,$AB,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$00,$00,$00,$FF,$FF,$FF,$00
DB $FF,$FF,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$F0,$F0,$F8,$08
DB $FC,$E4,$1C,$14,$1C,$14,$00,$00
DB $00,$00,$00,$00,$07,$07,$0F,$08
DB $1F,$13,$1C,$14,$1C,$14,$00,$00
DB $1C,$14,$1C,$14,$FC,$E4,$F8,$08
DB $F0,$F0,$00,$00,$00,$00,$00,$00
DB $1C,$14,$1C,$14,$1F,$13,$0F,$08
DB $07,$07,$00,$00,$00,$00,$00,$00
DB $1C,$14,$1C,$14,$FC,$E4,$F8,$08
DB $FC,$E4,$1C,$14,$1C,$14,$00,$00
DB $1C,$14,$1C,$14,$1F,$13,$0F,$08
DB $1F,$13,$1C,$14,$1C,$14,$00,$00
DB $1C,$14,$1C,$14,$1C,$14,$1C,$14
DB $1C,$14,$1C,$14,$1C,$14,$00,$00
DB $38,$38,$6C,$6C,$C6,$C6,$FE,$FE
DB $C6,$C6,$C6,$C6,$C6,$C6,$00,$00
DB $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC
DB $C6,$C6,$C6,$C6,$FC,$FC,$00,$00
DB $7C,$7C,$C6,$C6,$C0,$C0,$C0,$C0
DB $C0,$C0,$C6,$C6,$7C,$7C,$00,$00
DB $FC,$FC,$C6,$C6,$C6,$C6,$C6,$C6
DB $C6,$C6,$C6,$C6,$FC,$FC,$00,$00
DB $FE,$FE,$C0,$C0,$C0,$C0,$F8,$F8
DB $C0,$C0,$C0,$C0,$FE,$FE,$00,$00
DB $FE,$FE,$C0,$C0,$C0,$C0,$F8,$F8
DB $C0,$C0,$C0,$C0,$C0,$C0,$00,$00
DB $7C,$7C,$C6,$C6,$C0,$C0,$CE,$CE
DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00
DB $C6,$C6,$C6,$C6,$C6,$C6,$FE,$FE
DB $C6,$C6,$C6,$C6,$C6,$C6,$00,$00
DB $60,$60,$60,$60,$60,$60,$60,$60
DB $60,$60,$60,$60,$60,$60,$00,$00
DB $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C
DB $CC,$CC,$CC,$CC,$78,$78,$00,$00
DB $C6,$C6,$C6,$C6,$CC,$CC,$F8,$F8
DB $CC,$CC,$C6,$C6,$C6,$C6,$00,$00
DB $60,$60,$60,$60,$60,$60,$60,$60
DB $60,$60,$60,$60,$7C,$7C,$00,$00
DB $C6,$C6,$EE,$EE,$FE,$FE,$D6,$D6
DB $C6,$C6,$C6,$C6,$C6,$C6,$00,$00
DB $C6,$C6,$E6,$E6,$F6,$F6,$DE,$DE
DB $CE,$CE,$C6,$C6,$C6,$C6,$00,$00
DB $7C,$7C,$C6,$C6,$C6,$C6,$C6,$C6
DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00
DB $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC
DB $C0,$C0,$C0,$C0,$C0,$C0,$00,$00
DB $7C,$7C,$C6,$C6,$C6,$C6,$C6,$C6
DB $D6,$D6,$DE,$DE,$7C,$7C,$00,$00
DB $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC
DB $F8,$F8,$DC,$DC,$CE,$CE,$00,$00
DB $7E,$7E,$C0,$C0,$C0,$C0,$7C,$7C
DB $06,$06,$06,$06,$FC,$FC,$00,$00
DB $FC,$FC,$30,$30,$30,$30,$30,$30
DB $30,$30,$30,$30,$30,$30,$00,$00
DB $C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6
DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00
DB $C6,$C6,$C6,$C6,$6C,$6C,$6C,$6C
DB $6C,$6C,$38,$38,$38,$38,$00,$00
DB $C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6
DB $D6,$D6,$D6,$D6,$6C,$6C,$00,$00
DB $C6,$C6,$C6,$C6,$6C,$6C,$38,$38
DB $6C,$6C,$C6,$C6,$C6,$C6,$00,$00
DB $C6,$C6,$EE,$EE,$7C,$7C,$38,$38
DB $70,$70,$E0,$E0,$C0,$C0,$00,$00
DB $FE,$FE,$0C,$0C,$18,$18,$30,$30
DB $60,$60,$C0,$C0,$FE,$FE,$00,$00
DB $7C,$7C,$CE,$CE,$D6,$D6,$D6,$D6
DB $D6,$D6,$E6,$E6,$7C,$7C,$00,$00
DB $38,$38,$78,$78,$D8,$D8,$18,$18
DB $18,$18,$18,$18,$18,$18,$00,$00
DB $7C,$7C,$C6,$C6,$C6,$C6,$0C,$0C
DB $38,$38,$E0,$E0,$FE,$FE,$00,$00
DB $7C,$7C,$C6,$C6,$06,$06,$0C,$0C
DB $06,$06,$C6,$C6,$7C,$7C,$00,$00
DB $1C,$1C,$3C,$3C,$6C,$6C,$CC,$CC
DB $FE,$FE,$0C,$0C,$0C,$0C,$00,$00
DB $FE,$FE,$C0,$C0,$C0,$C0,$FC,$FC
DB $06,$06,$06,$06,$FC,$FC,$00,$00
DB $7C,$7C,$C6,$C6,$C0,$C0,$FC,$FC
DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00
DB $FE,$FE,$0C,$0C,$18,$18,$18,$18
DB $30,$30,$30,$30,$30,$30,$00,$00
DB $7C,$7C,$C6,$C6,$C6,$C6,$7C,$7C
DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00
DB $7C,$7C,$C6,$C6,$C6,$C6,$7E,$7E
DB $06,$06,$C6,$C6,$7C,$7C,$00,$00
DB $00,$7C,$00,$CE,$00,$D6,$00,$D6
DB $00,$D6,$00,$E6,$00,$7C,$00,$00
DB $00,$38,$00,$78,$00,$D8,$00,$18
DB $00,$18,$00,$18,$00,$18,$00,$00
DB $00,$7C,$00,$C6,$00,$C6,$00,$0C
DB $00,$38,$00,$E0,$00,$FE,$00,$00
DB $00,$7C,$00,$C6,$00,$06,$00,$0C
DB $00,$06,$00,$C6,$00,$7C,$00,$00
DB $00,$1C,$00,$3C,$00,$6C,$00,$CC
DB $00,$FE,$00,$0C,$00,$0C,$00,$00
DB $00,$FE,$00,$C0,$00,$C0,$00,$FC
DB $00,$06,$00,$06,$00,$FC,$00,$00
DB $00,$7C,$00,$C6,$00,$C0,$00,$FC
DB $00,$C6,$00,$C6,$00,$7C,$00,$00
DB $00,$FE,$00,$0C,$00,$18,$00,$18
DB $00,$30,$00,$30,$00,$30,$00,$00
DB $00,$7C,$00,$C6,$00,$C6,$00,$7C
DB $00,$C6,$00,$C6,$00,$7C,$00,$00
DB $00,$7C,$00,$C6,$00,$C6,$00,$7E
DB $00,$06,$00,$C6,$00,$7C,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
TilesEnd::

BIN
tools/Emulicious.exe Normal file

Binary file not shown.

BIN
tools/Emulicious.icl Normal file

Binary file not shown.

253
tools/Emulicious.ini Normal file
View File

@ -0,0 +1,253 @@
#Emulicious settings file
#Tue Oct 10 08:21:37 CEST 2023
SouthPanelHeight=635
GameBoyErrorBreakpointMessage6=
GameBoyErrorBreakpointMessage5=
InterruptBreakpointEnabled=false
GameBoyErrorBreakpointMessage4=
GameBoyErrorBreakpointEnabled19=false
GameBoyErrorBreakpointMessage3=
DebuggerHideCpuUsageGraph=false
RomDir=C\:\\workspace\\dmgtris\\bin
GameBoyErrorBreakpointEnabled18=false
GameBoyErrorBreakpointMessage2=
GameBoyErrorBreakpointEnabled17=false
GameBoyErrorBreakpointMessage1=
GameBoyErrorBreakpointEnabled16=false
Key19=72
GameBoyErrorBreakpointMessage0=
Key18=71
Key17=76
Key16=74
GameBoyErrorBreakpointEnabled9=false
DebuggerEventFiltersGameBoy=
Key15=75
GameBoyErrorBreakpointEnabled8=false
Key14=73
GameBoyErrorBreakpointEnabled7=false
GameBoyErrorBreakpointEnabled10=true
Gamepad0Key9=-1
Key13=83
GameBoyErrorBreakpointEnabled6=false
WindowEventViewerWindowHeight=861
Gamepad0Key8=-1
Key12=65
GameBoyErrorBreakpointEnabled5=false
Gamepad0Key7=-1
Key11=39
GameBoyErrorBreakpointEnabled4=false
Gamepad0Key6=-1
Key10=37
GameBoyErrorBreakpointEnabled3=false
Gamepad0Key5=-1
GameBoyErrorBreakpointEnabled2=false
Gamepad0Key4=-1
GameBoyErrorBreakpointEnabled1=false
Gamepad0Key3=-1
GameBoyErrorBreakpointEnabled0=false
Gamepad0Key2=-1
Gamepad0Key1=-1
AudioSync=false
Gamepad0Key0=-1
WindowTilemapViewerOpen=true
SMSInputDeviceB=1
SMSInputDeviceA=1
DataExecutionBreakpointEnabled=false
GameBoyErrorBreakpointCondition32=
WindowEventViewerWindowY=489
WindowEventViewerWindowX=1472
DebuggerWestPanelSelectedTab=0
Gamepad0Key37=-1
Gamepad0Key36=-1
SMSbuttonsGamepad=-1
Gamepad0Key35=-1
GameBoyErrorBreakpointCondition20=
Gamepad0Key34=-1
Gamepad0Key33=-1
Gamepad0Key32=-1
Gamepad0Key31=-1
Gamepad0Key30=-1
DebuggerSouthPanelSelectedTab=0
StackWidth=940
SMSGamepadAKeyboard=false
GameBoyErrorBreakpointCondition19=
GameBoyErrorBreakpointCondition18=
GameBoyErrorBreakpointCondition17=
GameBoyErrorBreakpointCondition16=
Gamepad0Key29=-1
Gamepad0Key28=-1
Gamepad0Key27=-1
Gamepad0Key26=-1
Gamepad0Key25=-1
GameBoyErrorBreakpointCondition10=
GBGamepadThreshold=50
InterruptBreakpointSuspend=true
Gamepad0Key24=-1
Gamepad0Key23=-1
Gamepad0Key22=-1
Gamepad0Key21=-1
Gamepad0Key20=-1
UninitializedMemoryBreakpointEnabled=false
Gamepad0Key19=-1
WindowDebuggerHeight=987
Gamepad0Key18=-1
Gamepad0Key17=-1
Gamepad0Key16=-1
Gamepad0Key15=-1
Gamepad0Key14=-1
Gamepad0Key13=-1
Gamepad0Key12=-1
Gamepad0Key11=-1
KeyboardRequireWindowFocus=true
Gamepad0Key10=-1
DataExecutionBreakpointSuspend=true
SMSbuttonsKeyboard=false
GBGamepad=-1
WindowEventViewerWindowOpen=true
StretchToWindow=false
Gamepad1Key37=-1
Gamepad1Key36=-1
DebuggerHideToolbar=false
Gamepad1Key35=-1
Gamepad1Key34=-1
Gamepad1Key33=-1
Gamepad1Key32=-1
Gamepad1Key31=-1
Gamepad1Key30=-1
InterruptBreakpointCondition=
SMSGamepadAThreshold=50
Gamepad1Key29=-1
Gamepad1Key28=-1
WindowDebuggerOpen=false
Gamepad1Key27=-1
Gamepad1Key26=-1
SMSGamepadB=-1
Gamepad1Key25=-1
SMSGamepadA=-1
Gamepad1Key24=-1
EventViewerEventFiltersGameBoy=
Gamepad1Key23=-1
Gamepad1Key22=-1
Gamepad1Key21=-1
Gamepad1Key20=-1
StackSplitLocation=320
FontSize=13
WindowEmuliciousHeight=781
CodeFontSize=13
WindowTilemapViewerY=544
GBGamepadKeyboard=false
UninitializedMemoryBreakpointSuspend=true
WindowTilemapViewerX=1013
SMSGamepadBKeyboard=false
DebuggerConsoleLogBreakpoints=true
SMSGamepadBThreshold=50
Gamepad1Key19=-1
Gamepad1Key18=-1
BankSwapAtPCBreakpointEnabled=false
Gamepad1Key17=-1
Gamepad1Key16=-1
Gamepad1Key15=-1
Recent0=C\:\\workspace\\dmgtris\\bin\\out.gb
GameBoyErrorBreakpointSuspend32=true
Gamepad1Key14=-1
Gamepad1Key13=-1
Gamepad1Key12=-1
Gamepad1Key11=-1
GameBoyErrorBreakpointSuspend9=true
Gamepad1Key10=-1
GameBoyErrorBreakpointSuspend8=true
GameBoyErrorBreakpointSuspend7=true
GameBoyErrorBreakpointSuspend6=true
GameBoyErrorBreakpointSuspend5=true
GameBoyErrorBreakpointSuspend4=true
GameBoyErrorBreakpointSuspend3=true
GameBoyErrorBreakpointSuspend2=true
GameBoyErrorBreakpointSuspend1=true
GameBoyErrorBreakpointSuspend0=true
Scale=5.0
DebuggerMemorySelectedAddress=0
WindowEmuliciousWidth=816
GameBoyErrorBreakpointSuspend20=true
DataExecutionBreakpointCondition=
GameBoyErrorBreakpointMessage32=
BankSwapAtPCBreakpointCondition=
WindowTilemapViewerWidth=404
SMSbuttonsThreshold=50
Gamepad1Key9=-1
Gamepad1Key8=-1
UninitializedMemoryBreakpointCondition=
Gamepad1Key7=-1
GameBoyErrorBreakpointSuspend19=true
Gamepad1Key6=-1
GameBoyErrorBreakpointSuspend18=true
Gamepad1Key5=-1
GameBoyErrorBreakpointSuspend17=true
Gamepad1Key4=-1
GameBoyErrorBreakpointSuspend16=true
Gamepad1Key3=-1
Gamepad1Key2=-1
Gamepad1Key1=-1
Gamepad1Key0=-1
GameBoyErrorBreakpointSuspend10=true
WindowTilemapViewerHeight=744
WindowEventViewerWindowDivider=309
GameBoyErrorBreakpointMessage20=
WindowDebuggerY=158
WindowDebuggerX=939
Key37=-1
Key36=-1
Key35=-1
GameBoyErrorBreakpointCondition9=
GameBoyErrorBreakpointEnabled32=false
Key34=-1
GameBoyErrorBreakpointCondition8=
Key33=-1
GameBoyErrorBreakpointMessage19=
GameBoyErrorBreakpointCondition7=
Key32=-1
GameBoyErrorBreakpointCondition6=
GameBoyErrorBreakpointMessage18=
DebuggerMemoryTabVisibleRect=0,0,0,0
Key31=-1
GameBoyErrorBreakpointCondition5=
GameBoyErrorBreakpointMessage17=
OutlineWidth=324
WindowEventViewerWindowWidth=930
Key30=-1
GameBoyErrorBreakpointCondition4=
GameBoyErrorBreakpointMessage16=
GameBoyErrorBreakpointCondition3=
GameBoyErrorBreakpointCondition2=
GameBoyErrorBreakpointCondition1=
Key9=40
GameBoyErrorBreakpointCondition0=
Key8=38
Key7=83
Key6=87
GameBoyErrorBreakpointMessage10=
Key5=65
Key4=68
Key3=10
Key2=192
Key1=75
Key0=74
Update=2
Key29=-1
Key28=10
Key27=-1
Key26=-1
Key25=-1
Key24=-1
Key23=10
GameBoyErrorBreakpointEnabled20=false
Key22=-1
Key21=-1
Key20=-1
BankSwapAtPCBreakpointSuspend=true
WindowEmuliciousY=385
WindowEmuliciousX=97
DebuggerMemorySelectedTab=RAM
WindowDebuggerWidth=1110
GameBoyErrorBreakpointMessage9=
GameBoyErrorBreakpointMessage8=
GameBoyErrorBreakpointMessage7=

BIN
tools/Emulicious.jar Normal file

Binary file not shown.

65
tools/Expressions.txt Normal file
View File

@ -0,0 +1,65 @@
Expressions/conditions/messages support the following:
arithmetic operators: +, -, *, /, %, # (modulo)
bitwise/logical operators: & (bitwise AND), | (bitwise OR), ^ (XOR), ~ (bitwise NOT), ! (logical NOT), && (logical AND), || (logical OR)
shift operators: <<, >>
compare operators: =, ==, !=, <, >, <=, >=
decimal numbers
hex numbers (prefixed by either $ or 0x)
binary numbers (prefixed by %)
character literals (surrounded by ')
symbols loaded from a symfile
variables (see below)
the @ operator to "read" a value from a calculated address
the @@ operator to specifcy the location to read from (Usage: location@@address)
the : operator to map a specified address to a specified bank (Usage: bank:address)
the & operator to retrive the bank at the specified address (Usage: &address)
the && operator to retrive the bank of the specified symbol (Usage: &&symbol)
Besides that the following variables are supported:
All register names (As single registers and as register pairs)
Flag names followed by the letter f (For example zf for the zero flag)
va (the current vdp address)
vaddress (the current vdp address)
scanline (the current scanline)
address (the current address)
ie (1 if interrupts enabled else 0)
ime (same as above)
sram (0 if sram disabled, 1 if sram enabled, -1 if sram not available)
bank0 (the bank in slot 0)
bank1 (the bank in slot 1)
bank2 (the bank in slot 2)
bankS (the SRAM bank)
For read/write watchpoints only:
value (the value being read/written)
port (the port being read/written)
source (the address being read/written)
op (the operation: 0 - read, 1 - write, 2 - execute)
oldvalue (the value before the operation)
For read watchpoints only:
destination (the destination of a branch instruction)
Possible locations are:
rom, ram, vram, sram,
word (word is a pseudo-location to read words instead of bytes),
dword (same as word but for double words, i.e. 4 bytes),
beword (same as word but big-endian),
bedword (same as dword but big-endian)
Locations can be prefixed with "word." to read a word from a location. Example: "word.ram@@spritePointer" to read the sprite pointer from RAM.
Examples:
Expression "a:hl" maps the value of register hl to the bank specified by register a
Watchpoint on RAM address $c000 with condition "value = $82": The watchpoint only triggers when the value being read/written from/to $c000 equals to $82
Watchpoint on RAM address $c000 with condition "value != oldvalue": The watchpoint only triggers when the value being written to $c000 differs from its old value
Breakpoint on ROM address $0100 with condition "!zf": The breakpoint only triggers when the zero flag is not set.
Explanation: f is the flags register, $40 has only the 6th bit set (which is the zero flag)
Watchpoint on RAM address $c000 with condition "value != 0": The watchpoint only triggers when the value being read/written from/to $c000 is not 0
Watchpoint on RAM address $c000 with condition "oldvalue > 0 && value = 0": The watchpoint only triggers when the value being written to $c000
is 0 and the old value at $c000 was greater than 0
Watchpoint on RAM address $c000 with condition "(value & 1) != (oldvalue & 1)": The watchpoint only triggers when bit 0 at $c000 changes by a write
Breakpoint on ROM at vBlankHandler with condition "@flagUpdatingGame != 0"
and message "Entered VBlank while still in the Game Update!": The breakpoint only triggers when the value read from flagUpdatingGame is not 0.
It then logs the message "Entered VBlank while still in the Game Update!".
Explanation: flagUpdatingGame is a RAM label, @ is the read operator
Watchpoint on Port $dc and all its mirrors is achieved by entering "pc0..ff" as address and "(source & 1) = 0" as condition

175
tools/GBMB/README.TXT Normal file
View File

@ -0,0 +1,175 @@
Gameboy Map Builder
Version 1.8
Release date: 2-10-99
Copyright H. Mulder 1999
DESCRIPTION:
------------
You can use the Gameboy Map Builder ("GBMB") to design maps for your own
Gameboy productions.
DISCLAIMER:
-----------
The Gameboy Map Builder is Freeware; you are allowed to use it in any way
you want, without paying me anything. The only thing I want in return are
bug-reports and enhancement-requests, which can be mailed to
hpmulder@casema.net.
You are also allowed (and encouraged) to distribute this software, as long
as you don't receive any payment for it. If you want to link your home page
to GBMB, be sure to link it to the main site, not directly to the file, as
updates will receive different filenames.
Keep in mind that you use this software at your own risk; any damage which
might occur, in whatever form, is your own responsibility.
TO INSTALL:
-----------
Start GBMB.EXE (That's generally it).
For maximum enjoyment, make sure all accompanied files are in the same
directory as GBMB.EXE. Also, associate .GBM-files to GBMB; next to loading
GBMB when you select a .GBM-file, GBMB will also start adding these files
to your Documents-menu when this association exists. Adding GBMB.EXE to
your start-bar or desktop might also simplify things.
CONTACT INFO:
-------------
You can get the latest version and info about GBMB from www-site:
http://www.casema.net/~hpmulder
I can be contacted though E-Mail at: hpmulder@casema.net
HISTORY:
--------
Version: Date: Description:
1.8 2 October 1999 NEW! each location can have its own palette
Fix: 'Copy as Bitmap' works for SGB colorsets
Note:Copy/paste format changed due to location-palettes
1.7 28 August 1999 NO$GMB Filter is now optional (under "Color set")
Added various hotkeys
Fix: C-export corrected when splitting data
Fixed usage of relative paths for GBR-files:
-Killed off AVs
-Auto Update now works for them
-Some other minor glitches
1.6 13 August 1999 'Win9X cleanup':
Fix: Copy/Paste finally works
Fix: Much less system drag
Fix: Saved tilesets now directly updated
Note that I use NT4 myself, so if you see
technical problems on the Win9X-platform,
mail me. I will try to handle these problems
more swiftly in the future.
1.5 6 August 1999 NO$GMB GBC color filter (thanks to Martin)
Fix: #512> tiles are saved correctly
Fix: Only last Paste is Undone
1.4 13 June 1999 Fix: Copy as Bitmap works again
Fix: large Pastes are undone correctly
1.3 24 May 1999 Auto update! (see HLP for info)
768 tile-support
Fix: Ver/Hor flip are shown correctly
Tile Copy/Paste tweaked
MouseWheel support
1.2 21 March 1999 Export: Tile offset added
Block Fill: new patterns added
Relative filepath support (Export, Tileset)
Cleaned up Clipboard:
- Tile Paste bug fixed
- Property Copy bug fixed
- V & H-Flip are now copied
- Format changed; see HLP
1.1 23 January 1999 New: ISAS export-format
New: Bank constant generated in export
Fix: Possible AV when opening tilefiles
Fix: GBDK format error
Fix: GUI-settings not always saved
Fix: Zoom wrong in new file
1.0 17 January 1999 Larger maps (1024 x 1024)
More properties (32)
Less memory usage (new mem-handling)
Build-in vert/hor flip for GBC
More predefined export properties
New info-panel
Export: 'Split' for >16K maps
512 tiles support
---------------------------------------------------------------------------
NOTE: As of version 1.0, a new file-format is used. Download GBMB Converter
from my page to convert older files to the new format.
---------------------------------------------------------------------------
0.9 29 November 1998 Gameboy Color support
0.8 30 August 1998 New feature: Property colors
New feature: Copy as bitmap
0.7 22 August 1998 Fixed SGB/GB palette behaviour
New drawtool: Dropper
New zoom: 25%
Faster screen-draws
Fixed: Maximized forms saved incorrectly
0.6 27 July 1998 Super Gameboy support
New Export-setting: Map layout
Fixed 0.5 plane export-output
0.5 5 june 1998 New: Block selection
NOTE: The following functions have changed
due to Block selection; see HLP for new
behaviour.
Mouse buttons (!!)
Block Fill
Info Panel
Cut/Copy/Paste implemented.
Selection-visibility increased.
Space bar fills current selection with
selected tile.
0.4 22 May 1998 New feature: Grid.
New feature: Double markers.
Undo for Insert/Delete Row/Column.
Undo less sensitive.
Scrollbars move a page.
Cleaner GUI when loading.
Fixed: Some settings were not saved.
0.3 17 May 1998 Tileset automatically reloaded when changed.
(Partial) Undo implemented.
New feature: Block fill.
Cleaned up GBDK C export.
0.2 2 May 1998 Faster screen-updates.
Infopanel-input friendlier.
'Clear map' added.
'Color set' added.
[Ctrl]-cursorkeys move the map.
Defaults can be set in GBMB.INI.
Bug fix: Export filename not always
shown correctly.
Bug fix: RGBDS Obj could not export
to bank 0.
Bug fix: Didn't use tileset palette.
Various GUI tweaks.
0.1 25 April 1998 Initial release.

BIN
tools/GBMB/gbmb.exe Normal file

Binary file not shown.

BIN
tools/GBMB/gbmb.hlp Normal file

Binary file not shown.

14
tools/GBMB/gbmb.ini Normal file
View File

@ -0,0 +1,14 @@
[General]
GBMPath=C:\workspace\dmgtris\src\res\
GBRPath=C:\workspace\dmgtris\src\res\
ViewInfoPanel=1
ViewColorSet=0
ViewZoom=2
rem ViewGrid=1
rem ViewDoubleMarkers=1
rem ViewPropertyColors=1
[Recently used files]
F0=c:\workspace\dmgtris\src\res\gameplay.gbm
F1=c:\workspace\dmgtris\gameplay.gbm

153
tools/GBTD/README.TXT Normal file
View File

@ -0,0 +1,153 @@
Gameboy Tile Designer
Version 2.2
Release date: 28-08-1999
Copyright H. Mulder 1999
DESCRIPTION:
------------
You can use the Gameboy Tile Designer ("GBTD") to design tiles for your own
Gameboy productions.
DISCLAIMER:
-----------
The Gameboy Tile Designer is Freeware; you are allowed to use it in any way
you want, without paying me anything. The only thing I want in return are
bug-reports and enhancement-requests, which can be mailed to
hpmulder@casema.net.
You are also allowed (and encouraged) to distribute this software, as long
as you don't receive any payment for it. If you want to link your home page
to GBTD, be sure to link it to the main site, not directly to the file, as
updates will receive different filenames.
Keep in mind that you use this software at your own risk; any damage which
might occur, in whatever form, is your own responsibility.
TO INSTALL:
-----------
Start GBTD.EXE (That's generally it).
For maximum enjoyment, make sure all accompanied files are in the same
directory as GBTD.EXE. Also, associate .GBR-files to GBTD; next to loading
GBTD when you select a .GBR-file, GBTD will also start adding these files
to your Documents-menu when this association exists. Adding GBTD.EXE to
your start-bar or desktop might also simplify things.
CONTACT INFO:
-------------
You can get the latest version and info about GBTD from www-site:
http://www.casema.net/~hpmulder
I can be contacted through E-Mail at: hpmulder@casema.net
HISTORY:
--------
Version: Date: Description:
2.2 28 August 1999 Fix: Palette-paste less prone to errors
NO$GMB Filter is now optional (under "Color set")
Added various hotkeys
2.1 6 August 1999 NO$GMB GBC color filter (thanks to Martin)
Fix: 'Save file?'-dialog popped up too often
2.0 24 May 1999 Auto update! (see HLP for info)
768 tile-support
Palette Copy&Paste fixed (again..)
Various minor fixes
1.9 18 April 1999 Dropdown-list with palettes
ISAS Export format
Fix: "Palettes.." more keyboard-friendly
Fix: Palette-Copy&Paste didn't copy correctly
1.8 17 January 1999 512 tiles support
Export: 'Split' for large tilesets
1.7 29 November 1998 Gameboy Color support
1.6 16 August 1998 Fix: Color Selector up-arrow fixed
Fix: 8x16 showcases work again
Color Selector shows SGB palette# as hint
Internal overhaul
1.5 9 August 1998 Export: Metatile support.
Import: Binary file support.
1.4 2 August 1998 Palette entries can now be exported.
Copy/Paste for palette colors.
Fixed SGB/GB palette behaviour.
Cleaned up showcases.
1.3 5 July 1998 Super Gameboy support.
Selection-visibility increased.
New export data-format: 'consecutive 4-color'.
1.2 16 May 1998 Bug fix: cursor inprecise when drawing constantly.
Internal clean-up (a bit faster, a bit less resources, etc).
1.1 9 May 1998 Faster screen-updates.
'Bookmarks' added.
Bug fix: Export filename not always shown correctly.
Bug fix: RGBDS Obj could not export to bank 0.
Cleaned up GBDK C export.
Various GUI tweaks.
1.0 18 January 1998 Gameboy color support.
INI file enhanced;
customizable default settings added.
Filename is shown in title.
Various GUI glitches fixed.
Minor internal optimizations.
0.9 7 December 1997 New feature: 'Split Copy and Paste';
Copy and paste whole images to and from GBTD.
Various GUI glitches fixed.
0.8 30 November 1997 Compression fixed.
Tilesets no longer restricted to 128 tiles.
0.7 8 November 1997 Build-in GB-Compress support.
'Rotate clockwise' added.
Screen-update fixed when opening files.
TASM export-remarks fixed.
0.6 26 October 1997 'Flip colors' added.
Partial F1 help-support added.
Minor changes/fixes to HLP-file.
'Paste' fixed; now it handles non-default
palettes correctly.
0.5 27 june 1997 UI rearranged; design tools now have their
own toolbar and menu.
'Flood fill' added.
'Undo' added.
'Reopen' added.
Display-bug when importing GBE files has
been fixed.
Smoother handling of display when loading
files.
0.4 18 june 1997 Added Help File.
Interface cleanup:
- Pasting now uses the standard CTRL-V.
- Arrow-buttons now function as expected.
- Better key-handling.
0.3 11 june 1997 Export for 'TASM' added.
'Clear tiles' added.
'Nibble markers' added.
0.2 1 june 1997 Export for 'GBDK C' and 'Binary file' added.
Direct export via Ctrl-E or menu.
Faster startup.
Minor bug-fixes.
0.1 25 May 1997 Initial beta release

BIN
tools/GBTD/gbtd.exe Normal file

Binary file not shown.

BIN
tools/GBTD/gbtd.hlp Normal file

Binary file not shown.

4
tools/GBTD/gbtd.ini Normal file
View File

@ -0,0 +1,4 @@
[General]
GBRPath=c:\workspace\dmgtris\
[Recently used files]
F0=c:\workspace\dmgtris\tiles.gbr

30
tools/GBTD/tiles.inc Normal file
View File

@ -0,0 +1,30 @@
; TILES.INC
;
; Include File.
;
; Info:
; Section : Tiles
; Bank : 0
; Form : All tiles as one unit.
; Format : Gameboy 4 color.
; Compression : None.
; Counter : None.
; Tile size : 8 x 8
; Tiles : 0 to 127
;
; Palette colors : None.
; SGB Palette : None.
; CGB Palette : None.
;
; Convert to metatiles : No.
;
; This file was generated by GBTD v2.2
; Bank of tiles.
TileLabelBank EQU 0
; Start of tile array.
GLOBAL TileLabel
; End of TILES.INC

284
tools/GBTD/tiles.z80 Normal file
View File

@ -0,0 +1,284 @@
; TILES.Z80
;
; Tile Source File.
;
; Info:
; Section : Tiles
; Bank : 0
; Form : All tiles as one unit.
; Format : Gameboy 4 color.
; Compression : None.
; Counter : None.
; Tile size : 8 x 8
; Tiles : 0 to 127
;
; Palette colors : None.
; SGB Palette : None.
; CGB Palette : None.
;
; Convert to metatiles : No.
;
; This file was generated by GBTD v2.2
SECTION "Tiles", ROM0
; Start of tile array.
TileLabel::
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $67,$1F,$67,$1F,$67,$1F,$67,$1F
DB $67,$1F,$67,$1F,$67,$1F,$00,$00
DB $E6,$F8,$E6,$F8,$E6,$F8,$E6,$F8
DB $E6,$F8,$E6,$F8,$E6,$F8,$00,$00
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$FF
DB $00,$FF,$FF,$00,$FF,$00,$00,$00
DB $67,$1F,$67,$1F,$67,$1F,$60,$1F
DB $60,$1F,$7F,$00,$7F,$00,$00,$00
DB $E6,$F8,$E6,$F8,$E6,$F8,$06,$F8
DB $06,$F8,$FE,$00,$FE,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$01,$00,$00,$00
DB $00,$00,$00,$00,$00,$FF,$FF,$FF
DB $00,$FF,$00,$00,$00,$00,$00,$00
DB $80,$80,$E0,$E0,$F8,$F8,$FE,$FE
DB $F8,$F8,$E0,$E0,$80,$80,$00,$00
DB $00,$FF,$7E,$99,$66,$BD,$66,$BD
DB $66,$BD,$7E,$99,$00,$FF,$00,$00
DB $00,$FF,$36,$C9,$6C,$93,$5A,$A5
DB $36,$C9,$6C,$93,$00,$FF,$00,$00
DB $00,$FF,$00,$BD,$3C,$81,$00,$81
DB $3C,$81,$00,$BD,$00,$FF,$00,$00
DB $00,$FF,$3C,$C3,$5A,$A5,$7E,$81
DB $5A,$A5,$3C,$C3,$00,$FF,$00,$00
DB $00,$FF,$5A,$A5,$42,$BD,$42,$BD
DB $42,$BD,$5A,$A5,$00,$FF,$00,$00
DB $00,$FF,$7E,$81,$7E,$81,$7E,$81
DB $7E,$81,$7E,$81,$00,$FF,$00,$00
DB $00,$FF,$54,$AB,$2A,$D5,$54,$AB
DB $2A,$D5,$54,$AB,$00,$FF,$00,$00
DB $FF,$FF,$FF,$99,$E7,$BD,$E7,$BD
DB $E7,$BD,$FF,$99,$FF,$FF,$00,$00
DB $FF,$FF,$B7,$C9,$ED,$93,$DB,$A5
DB $B7,$C9,$ED,$93,$FF,$FF,$00,$00
DB $FF,$FF,$81,$BD,$BD,$81,$81,$81
DB $BD,$81,$81,$BD,$FF,$FF,$00,$00
DB $FF,$FF,$BD,$C3,$DB,$A5,$FF,$81
DB $DB,$A5,$BD,$C3,$FF,$FF,$00,$00
DB $FF,$FF,$DB,$A5,$C3,$BD,$C3,$BD
DB $C3,$BD,$DB,$A5,$FF,$FF,$00,$00
DB $FF,$FF,$FF,$81,$FF,$81,$FF,$81
DB $FF,$81,$FF,$81,$FF,$FF,$00,$00
DB $FF,$FF,$D5,$AB,$AB,$D5,$D5,$AB
DB $AB,$D5,$D5,$AB,$FF,$FF,$00,$00
DB $00,$FF,$7E,$99,$66,$BD,$66,$BD
DB $66,$BD,$FE,$BB,$FF,$FF,$00,$00
DB $00,$FF,$36,$C9,$6C,$93,$5A,$A5
DB $36,$C9,$EE,$BB,$FF,$FF,$00,$00
DB $00,$FF,$00,$BD,$3C,$81,$00,$81
DB $3C,$81,$AA,$BF,$FF,$FF,$00,$00
DB $00,$FF,$3C,$C3,$5A,$A5,$7E,$81
DB $5A,$A5,$BE,$EB,$FF,$FF,$00,$00
DB $00,$FF,$5A,$A5,$42,$BD,$42,$BD
DB $42,$BD,$FA,$AF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$81,$7E,$81,$7E,$81
DB $7E,$81,$FE,$AB,$FF,$FF,$00,$00
DB $00,$FF,$54,$AB,$2A,$D5,$54,$AB
DB $2A,$D5,$FE,$AB,$FF,$FF,$00,$00
DB $00,$FF,$7E,$99,$66,$BD,$66,$BD
DB $EE,$BF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$36,$C9,$6C,$93,$5A,$A5
DB $BE,$EB,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$00,$BD,$3C,$81,$00,$81
DB $BE,$AB,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$3C,$C3,$5A,$A5,$7E,$81
DB $FA,$AF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$5A,$A5,$42,$BD,$42,$BD
DB $EA,$BF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$81,$7E,$81,$7E,$81
DB $FE,$AB,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$54,$AB,$2A,$D5,$54,$AB
DB $AA,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$99,$66,$BD,$EE,$BF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$36,$C9,$6C,$93,$FA,$AF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$00,$BD,$3C,$81,$AA,$AB
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$3C,$C3,$5A,$A5,$FE,$AB
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$5A,$A5,$42,$BD,$EA,$BF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$81,$7E,$81,$FE,$AB
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$54,$AB,$2A,$D5,$FE,$AB
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$99,$EE,$BF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$36,$C9,$EE,$BB,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$00,$BD,$BE,$AB,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$3C,$C3,$FA,$AF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$5A,$A5,$EA,$BF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$7E,$81,$FE,$AB,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$54,$AB,$AA,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$FE,$BB,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$BE,$EB,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$AA,$BF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$BE,$EB,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$FA,$AF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$FE,$AB,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$FF,$FE,$AB,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $AA,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$00,$00
DB $00,$00,$00,$00,$FF,$FF,$FF,$00
DB $FF,$FF,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$F0,$F0,$F8,$08
DB $FC,$E4,$1C,$14,$1C,$14,$00,$00
DB $00,$00,$00,$00,$07,$07,$0F,$08
DB $1F,$13,$1C,$14,$1C,$14,$00,$00
DB $1C,$14,$1C,$14,$FC,$E4,$F8,$08
DB $F0,$F0,$00,$00,$00,$00,$00,$00
DB $1C,$14,$1C,$14,$1F,$13,$0F,$08
DB $07,$07,$00,$00,$00,$00,$00,$00
DB $1C,$14,$1C,$14,$FC,$E4,$F8,$08
DB $FC,$E4,$1C,$14,$1C,$14,$00,$00
DB $1C,$14,$1C,$14,$1F,$13,$0F,$08
DB $1F,$13,$1C,$14,$1C,$14,$00,$00
DB $1C,$14,$1C,$14,$1C,$14,$1C,$14
DB $1C,$14,$1C,$14,$1C,$14,$00,$00
DB $38,$38,$6C,$6C,$C6,$C6,$FE,$FE
DB $C6,$C6,$C6,$C6,$C6,$C6,$00,$00
DB $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC
DB $C6,$C6,$C6,$C6,$FC,$FC,$00,$00
DB $7C,$7C,$C6,$C6,$C0,$C0,$C0,$C0
DB $C0,$C0,$C6,$C6,$7C,$7C,$00,$00
DB $FC,$FC,$C6,$C6,$C6,$C6,$C6,$C6
DB $C6,$C6,$C6,$C6,$FC,$FC,$00,$00
DB $FE,$FE,$C0,$C0,$C0,$C0,$F8,$F8
DB $C0,$C0,$C0,$C0,$FE,$FE,$00,$00
DB $FE,$FE,$C0,$C0,$C0,$C0,$F8,$F8
DB $C0,$C0,$C0,$C0,$C0,$C0,$00,$00
DB $7C,$7C,$C6,$C6,$C0,$C0,$CE,$CE
DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00
DB $C6,$C6,$C6,$C6,$C6,$C6,$FE,$FE
DB $C6,$C6,$C6,$C6,$C6,$C6,$00,$00
DB $60,$60,$60,$60,$60,$60,$60,$60
DB $60,$60,$60,$60,$60,$60,$00,$00
DB $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C
DB $CC,$CC,$CC,$CC,$78,$78,$00,$00
DB $C6,$C6,$C6,$C6,$CC,$CC,$F8,$F8
DB $CC,$CC,$C6,$C6,$C6,$C6,$00,$00
DB $60,$60,$60,$60,$60,$60,$60,$60
DB $60,$60,$60,$60,$7C,$7C,$00,$00
DB $C6,$C6,$EE,$EE,$FE,$FE,$D6,$D6
DB $C6,$C6,$C6,$C6,$C6,$C6,$00,$00
DB $C6,$C6,$E6,$E6,$F6,$F6,$DE,$DE
DB $CE,$CE,$C6,$C6,$C6,$C6,$00,$00
DB $7C,$7C,$C6,$C6,$C6,$C6,$C6,$C6
DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00
DB $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC
DB $C0,$C0,$C0,$C0,$C0,$C0,$00,$00
DB $7C,$7C,$C6,$C6,$C6,$C6,$C6,$C6
DB $D6,$D6,$DE,$DE,$7C,$7C,$00,$00
DB $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC
DB $F8,$F8,$DC,$DC,$CE,$CE,$00,$00
DB $7E,$7E,$C0,$C0,$C0,$C0,$7C,$7C
DB $06,$06,$06,$06,$FC,$FC,$00,$00
DB $FC,$FC,$30,$30,$30,$30,$30,$30
DB $30,$30,$30,$30,$30,$30,$00,$00
DB $C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6
DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00
DB $C6,$C6,$C6,$C6,$6C,$6C,$6C,$6C
DB $6C,$6C,$38,$38,$38,$38,$00,$00
DB $C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6
DB $D6,$D6,$D6,$D6,$6C,$6C,$00,$00
DB $C6,$C6,$C6,$C6,$6C,$6C,$38,$38
DB $6C,$6C,$C6,$C6,$C6,$C6,$00,$00
DB $C6,$C6,$EE,$EE,$7C,$7C,$38,$38
DB $70,$70,$E0,$E0,$C0,$C0,$00,$00
DB $FE,$FE,$0C,$0C,$18,$18,$30,$30
DB $60,$60,$C0,$C0,$FE,$FE,$00,$00
DB $7C,$7C,$CE,$CE,$D6,$D6,$D6,$D6
DB $D6,$D6,$E6,$E6,$7C,$7C,$00,$00
DB $38,$38,$78,$78,$D8,$D8,$18,$18
DB $18,$18,$18,$18,$18,$18,$00,$00
DB $7C,$7C,$C6,$C6,$C6,$C6,$0C,$0C
DB $38,$38,$E0,$E0,$FE,$FE,$00,$00
DB $7C,$7C,$C6,$C6,$06,$06,$0C,$0C
DB $06,$06,$C6,$C6,$7C,$7C,$00,$00
DB $1C,$1C,$3C,$3C,$6C,$6C,$CC,$CC
DB $FE,$FE,$0C,$0C,$0C,$0C,$00,$00
DB $FE,$FE,$C0,$C0,$C0,$C0,$FC,$FC
DB $06,$06,$06,$06,$FC,$FC,$00,$00
DB $7C,$7C,$C6,$C6,$C0,$C0,$FC,$FC
DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00
DB $FE,$FE,$0C,$0C,$18,$18,$18,$18
DB $30,$30,$30,$30,$30,$30,$00,$00
DB $7C,$7C,$C6,$C6,$C6,$C6,$7C,$7C
DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00
DB $7C,$7C,$C6,$C6,$C6,$C6,$7E,$7E
DB $06,$06,$C6,$C6,$7C,$7C,$00,$00
DB $00,$7C,$00,$CE,$00,$D6,$00,$D6
DB $00,$D6,$00,$E6,$00,$7C,$00,$00
DB $00,$38,$00,$78,$00,$D8,$00,$18
DB $00,$18,$00,$18,$00,$18,$00,$00
DB $00,$7C,$00,$C6,$00,$C6,$00,$0C
DB $00,$38,$00,$E0,$00,$FE,$00,$00
DB $00,$7C,$00,$C6,$00,$06,$00,$0C
DB $00,$06,$00,$C6,$00,$7C,$00,$00
DB $00,$1C,$00,$3C,$00,$6C,$00,$CC
DB $00,$FE,$00,$0C,$00,$0C,$00,$00
DB $00,$FE,$00,$C0,$00,$C0,$00,$FC
DB $00,$06,$00,$06,$00,$FC,$00,$00
DB $00,$7C,$00,$C6,$00,$C0,$00,$FC
DB $00,$C6,$00,$C6,$00,$7C,$00,$00
DB $00,$FE,$00,$0C,$00,$18,$00,$18
DB $00,$30,$00,$30,$00,$30,$00,$00
DB $00,$7C,$00,$C6,$00,$C6,$00,$7C
DB $00,$C6,$00,$C6,$00,$7C,$00,$00
DB $00,$7C,$00,$C6,$00,$C6,$00,$7E
DB $00,$06,$00,$C6,$00,$7C,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
; End of TILES.Z80

46
tools/GameBoy.ports Normal file
View File

@ -0,0 +1,46 @@
00 rP1
01 rSB
02 rSC
04 rDIV
05 rTIMA
06 rTMA
07 rTAC
0f rIF
10 rAUD1SWEEP
11 rAUD1LEN
12 rAUD1ENV
13 rAUD1LOW
14 rAUD1HIGH
16 rAUD2LEN
17 rAUD2ENV
18 rAUD2LOW
19 rAUD2HIGH
1a rAUD3ENA
1b rAUD3LEN
1c rAUD3LEVEL
1d rAUD3LOW
1e rAUD3HIGH
20 rAUD4LEN
21 rAUD4ENV
22 rAUD4POLY
23 rAUD4GO
24 rAUDVOL
25 rAUDTERM
26 rAUDENA
30 _AUD3WAVERAM
40 rLCDC
41 rSTAT
42 rSCY
43 rSCX
44 rLY
45 rLYC
46 rDMA
47 rBGP
48 rOBP0
49 rOBP1
4a rWY
4b rWX
ff rIE

67
tools/GameBoyColor.ports Normal file
View File

@ -0,0 +1,67 @@
00 rP1
01 rSB
02 rSC
04 rDIV
05 rTIMA
06 rTMA
07 rTAC
0f rIF
10 rAUD1SWEEP
11 rAUD1LEN
12 rAUD1ENV
13 rAUD1LOW
14 rAUD1HIGH
16 rAUD2LEN
17 rAUD2ENV
18 rAUD2LOW
19 rAUD2HIGH
1a rAUD3ENA
1b rAUD3LEN
1c rAUD3LEVEL
1d rAUD3LOW
1e rAUD3HIGH
20 rAUD4LEN
21 rAUD4ENV
22 rAUD4POLY
23 rAUD4GO
24 rAUDVOL
25 rAUDTERM
26 rAUDENA
30 _AUD3WAVERAM
40 rLCDC
41 rSTAT
42 rSCY
43 rSCX
44 rLY
45 rLYC
46 rDMA
47 rBGP
48 rOBP0
49 rOBP1
4a rWY
4b rWX
4d rKEY1
4f rVBK
51 rHDMA1
52 rHDMA2
53 rHDMA3
54 rHDMA4
55 rHDMA5
56 rRP
68 rBCPS
69 rBCPD
6A rOCPS
6B rOCPD
70 rSVBK
76 rPCM12
77 rPCM34
ff rIE

17
tools/GameGear.ports Normal file
View File

@ -0,0 +1,17 @@
00 Port_StartButtonAndRegion
01 Port_SerialDataEXT
02 Port_SerialRaw
03 Port_SerialSend
04 Port_SerialReceive
05 Port_SerialStatus
06 Port_Stereo
3e Port_MemoryControl out
3f Port_IOPortControl out
7e Port_VCounter in
7f Port_PSG out
7f Port_HCounter in
be Port_VDPData
bf Port_VDPAddress out
bf Port_VDPStatus in
dc Port_IOPort1 in
dd Port_IOPort2 in

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Eldred Habert
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,64 @@
<NotepadPlus>
<UserLang name="RGBASM" ext="asm inc" udlVersion="2.1">
<Settings>
<Global caseIgnored="yes" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
<Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
</Settings>
<KeywordLists>
<Keywords name="Comments">00; 01 02 03/* 04*/</Keywords>
<Keywords name="Numbers, prefix1"></Keywords>
<Keywords name="Numbers, prefix2">$ % &amp; `</Keywords>
<Keywords name="Numbers, extras1">_ A B C D E F a b c d e f</Keywords>
<Keywords name="Numbers, extras2"></Keywords>
<Keywords name="Numbers, suffix1"></Keywords>
<Keywords name="Numbers, suffix2"></Keywords>
<Keywords name="Numbers, range"></Keywords>
<Keywords name="Operators1">, ( ) [ ] ** ~ + - * / % &lt;&lt; &gt;&gt; &amp; | ^ != == &lt;= &gt;= &lt; &gt; &amp;&amp; || ! = \@ \# \1 \2 \3 \4 \5 \6 \7 \8 \9 \&lt;</Keywords>
<Keywords name="Operators2"></Keywords>
<Keywords name="Folders in code1, open"></Keywords>
<Keywords name="Folders in code1, middle"></Keywords>
<Keywords name="Folders in code1, close"></Keywords>
<Keywords name="Folders in code2, open"></Keywords>
<Keywords name="Folders in code2, middle"></Keywords>
<Keywords name="Folders in code2, close"></Keywords>
<Keywords name="Folders in comment, open"></Keywords>
<Keywords name="Folders in comment, middle"></Keywords>
<Keywords name="Folders in comment, close"></Keywords>
<Keywords name="Keywords1">ADC ADD AND BIT CALL CCF CPL CP DAA DEC DI EI HALT INC JP JR LD LDI LDD LDIO LDH NOP OR POP PUSH RES RETI RET RLCA RLC RLA RL RRC RRCA RRA RR RST SBC SCF SET SLA SRA SRL STOP SUB SWAP XOR</Keywords>
<Keywords name="Keywords2">AF BC DE HL SP HLD HLI A B C D E H L NZ Z NC</Keywords>
<Keywords name="Keywords3">DEF FRAGMENT BANK ALIGN SIZEOF STARTOF ROUND CEIL FLOOR DIV MUL POW LOG SIN COS TAN ASIN ACOS ATAN ATAN2 HIGH LOW ISCONST STRCMP STRIN STRRIN STRSUB STRLEN STRCAT STRUPR STRLWR STRRPL STRFMT CHARLEN CHARSUB INCLUDE PRINT PRINTLN PRINTT PRINTI PRINTV PRINTF EXPORT DS DB DW DL SECTION PURGE RSRESET RSSET INCBIN CHARMAP NEWCHARMAP SETCHARMAP PUSHC POPC FAIL WARN FATAL ASSERT STATIC_ASSERT MACRO ENDM SHIFT REPT FOR ENDR BREAK LOAD ENDL IF ELSE ELIF ENDC UNION NEXTU ENDU RB RW RL EQU EQUS REDEF SET PUSHS POPS PUSHO POPO OPT</Keywords>
<Keywords name="Keywords4">WRAM0 VRAM ROMX ROM0 HRAM WRAMX SRAM OAM</Keywords>
<Keywords name="Keywords5">@ _RS _NARG __LINE__ __FILE__ __DATE__ __TIME__ __ISO_8601_LOCAL__ __ISO_8601_UTC__ __UTC_YEAR__ __UTC_MONTH__ __UTC_DAY__ __UTC_HOUR__ __UTC_MINUTE__ __UTC_SECOND__ __RGBDS_MAJOR__ __RGBDS_MINOR__ __RGBDS_PATCH__ __RGBDS_RC__ __RGBDS_VERSION__</Keywords>
<Keywords name="Keywords6"></Keywords>
<Keywords name="Keywords7"></Keywords>
<Keywords name="Keywords8"></Keywords>
<Keywords name="Delimiters">00&quot;&quot;&quot; 01\ 02&quot;&quot;&quot; 03&quot; 04\ 05&quot; 06{ 07 08} 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
</KeywordLists>
<Styles>
<WordsStyle name="DEFAULT" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="COMMENTS" fgColor="797979" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="LINE COMMENTS" fgColor="797979" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="NUMBERS" fgColor="9E86C8" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS1" fgColor="6C99BB" bgColor="2E2E2E" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS2" fgColor="B4D273" bgColor="2E2E2E" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS3" fgColor="E87D3E" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS4" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS5" fgColor="B2B9BD" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS6" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS7" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS8" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="OPERATORS" fgColor="B05279" bgColor="2E2E2E" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="FOLDER IN CODE1" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE2" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN COMMENT" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS1" fgColor="E5B567" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="4" />
<WordsStyle name="DELIMITERS2" fgColor="E5B567" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="4" />
<WordsStyle name="DELIMITERS3" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="4" />
<WordsStyle name="DELIMITERS4" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS5" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS6" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS7" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS8" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
</Styles>
</UserLang>
</NotepadPlus>

View File

@ -0,0 +1,64 @@
<NotepadPlus>
<UserLang name="RGBASM" ext="asm inc" udlVersion="2.1">
<Settings>
<Global caseIgnored="yes" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
<Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
</Settings>
<KeywordLists>
<Keywords name="Comments">00; 01 02 03/* 04*/</Keywords>
<Keywords name="Numbers, prefix1"></Keywords>
<Keywords name="Numbers, prefix2">$ % &amp; `</Keywords>
<Keywords name="Numbers, extras1">_ A B C D E F a b c d e f</Keywords>
<Keywords name="Numbers, extras2"></Keywords>
<Keywords name="Numbers, suffix1"></Keywords>
<Keywords name="Numbers, suffix2"></Keywords>
<Keywords name="Numbers, range"></Keywords>
<Keywords name="Operators1">, ( ) [ ] ** ~ + - * / % &lt;&lt; &gt;&gt; &amp; | ^ != == &lt;= &gt;= &lt; &gt; &amp;&amp; || ! = \@ \# \1 \2 \3 \4 \5 \6 \7 \8 \9 \&lt;</Keywords>
<Keywords name="Operators2"></Keywords>
<Keywords name="Folders in code1, open"></Keywords>
<Keywords name="Folders in code1, middle"></Keywords>
<Keywords name="Folders in code1, close"></Keywords>
<Keywords name="Folders in code2, open"></Keywords>
<Keywords name="Folders in code2, middle"></Keywords>
<Keywords name="Folders in code2, close"></Keywords>
<Keywords name="Folders in comment, open"></Keywords>
<Keywords name="Folders in comment, middle"></Keywords>
<Keywords name="Folders in comment, close"></Keywords>
<Keywords name="Keywords1">ADC ADD AND BIT CALL CCF CPL CP DAA DEC DI EI HALT INC JP JR LD LDI LDD LDIO LDH NOP OR POP PUSH RES RETI RET RLCA RLC RLA RL RRC RRCA RRA RR RST SBC SCF SET SLA SRA SRL STOP SUB SWAP XOR</Keywords>
<Keywords name="Keywords2">AF BC DE HL SP HLD HLI A B C D E H L NZ Z NC</Keywords>
<Keywords name="Keywords3">DEF FRAGMENT BANK ALIGN SIZEOF STARTOF ROUND CEIL FLOOR DIV MUL POW LOG SIN COS TAN ASIN ACOS ATAN ATAN2 HIGH LOW ISCONST STRCMP STRIN STRRIN STRSUB STRLEN STRCAT STRUPR STRLWR STRRPL STRFMT CHARLEN CHARSUB INCLUDE PRINT PRINTLN PRINTT PRINTI PRINTV PRINTF EXPORT DS DB DW DL SECTION PURGE RSRESET RSSET INCBIN CHARMAP NEWCHARMAP SETCHARMAP PUSHC POPC FAIL WARN FATAL ASSERT STATIC_ASSERT MACRO ENDM SHIFT REPT FOR ENDR BREAK LOAD ENDL IF ELSE ELIF ENDC UNION NEXTU ENDU RB RW RL EQU EQUS REDEF SET PUSHS POPS PUSHO POPO OPT</Keywords>
<Keywords name="Keywords4">WRAM0 VRAM ROMX ROM0 HRAM WRAMX SRAM OAM</Keywords>
<Keywords name="Keywords5">@ _RS _NARG __LINE__ __FILE__ __DATE__ __TIME__ __ISO_8601_LOCAL__ __ISO_8601_UTC__ __UTC_YEAR__ __UTC_MONTH__ __UTC_DAY__ __UTC_HOUR__ __UTC_MINUTE__ __UTC_SECOND__ __RGBDS_MAJOR__ __RGBDS_MINOR__ __RGBDS_PATCH__ __RGBDS_RC__ __RGBDS_VERSION__</Keywords>
<Keywords name="Keywords6"></Keywords>
<Keywords name="Keywords7"></Keywords>
<Keywords name="Keywords8"></Keywords>
<Keywords name="Delimiters">00&quot;&quot;&quot; 01\ 02&quot;&quot;&quot; 03&quot; 04\ 05&quot; 06{ 07 08} 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
</KeywordLists>
<Styles>
<WordsStyle name="DEFAULT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="COMMENTS" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="LINE COMMENTS" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="NUMBERS" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS1" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS2" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS3" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS5" fgColor="5B00B7" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="OPERATORS" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="FOLDER IN CODE1" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS1" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="4" />
<WordsStyle name="DELIMITERS2" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="4" />
<WordsStyle name="DELIMITERS3" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="4" />
<WordsStyle name="DELIMITERS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
</Styles>
</UserLang>
</NotepadPlus>

View File

@ -0,0 +1,184 @@
//////////////////////////////////////////////////////////////////////////////
//
// Z80 Assembly plus WLA DX keywords highlighter written by Maxim, maxim@mwos.cjb.net
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// language name
Language: WLA-Z80 Assembler
//////////////////////////////////////////////////////////////////////////////
// put whatever you want here, short description, author name, email address..
Description: Z80 Assembly highlighter including WLA DX keywords, written by Maxim, maxim@mwos.cjb.net Keywords1 = Z80 opcodes; Keywords2 = Z80 registers; Keywords3 = Z80 opcode parameters; Keywords4 = WLA keywords; Keywords5 = WLA keyword parameters
//////////////////////////////////////////////////////////////////////////////
// default file filter
// note: if more than one extension is associated, eg:
// C/C++ files (*.c,*.cpp,*.h,*.hpp)|*.c;*.cpp;*.h;*.hpp
Filter: Z80 Assembler files (*.asm,*.inc,*.dat,*.z80)|*.asm;*.inc;*.dat;*.z80
//////////////////////////////////////////////////////////////////////////////
// help file which will be invoked when F1 is pressed
HelpFile:
//////////////////////////////////////////////////////////////////////////////
// language case sensitivity
// 0 - no
// 1 - yes
CaseSensitive: 0
//////////////////////////////////////////////////////////////////////////////
// comment type: LineComment - comment to the EOL
// BlockCommentBeg - block comment begin, it could be
// multiline
// BlockCommentEnd - block comment end
//
// if there is more than one definition of line/beg/end comment string,
// you can separate it with spaces.
// for example, for pascal it would be:
// LineComment: //
// BlockCommentBeg: (* {
// BlockCommentEnd: *) }
LineComment: ;
BlockCommentBeg: /*
BlockCommentEnd: */
//////////////////////////////////////////////////////////////////////////////
// identifier characters
// note: characters shouldn't be delimited, except arrays
// array of chars could be defined as from_char..to_char
IdentifierBegChars: a..z A..Z _ .
IdentifierChars: a..z A..Z 0..9 _ .
//////////////////////////////////////////////////////////////////////////////
// numeric constants begin characters
// note: characters shouldn't be delimited, except arrays
// array of chars could be defined as from_char..to_char
// number always starts with 0..9 except when NumConstBeg
// defines other
NumConstBegChars: 0..9 $ %
//////////////////////////////////////////////////////////////////////////////
// numeric constants characters
// note: characters shouldn't be delimited, except arrays
// array of chars could be defined as from_char..to_char
// number always starts with 0..9 except when NumConstBeg
// defines other
NumConstChars: 0..9 a..f A..F . h
//////////////////////////////////////////////////////////////////////////////
// escape character
EscapeChar: \
//////////////////////////////////////////////////////////////////////////////
// keyword table
// note: delimited with spaces, lines could be wrapped
// you may divide keywords into five groups which can be
// highlighted differently
// Z80 opcodes
KeyWords1: adc add and bit call ccf cp cpd cpdr cpi cpir cpl daa dec di djnz ei ex exx halt im in inc ind indr ini inir jp jr ld ldd lddr ldi ldir neg nop or otdr otir out outd outi pop push res ret reti retn rl rla rlc rlca rld rr rra rrc rrca rrd rst sbc scf set sla sra srl sub xor
// registers
KeyWords2: a f b c d e h l af bc de hl ix iy i r af' sp pc
// Z80 opcode parameters
KeyWords3: z nz nc po pe p m
// WLA keywords
KeyWords4: .computesmschecksum .sdsctag .smstag .emptyfill .export .outname .asc .asctable .asciitable .asm .background .bank .block .br .breakpoint .byt .rombanksize .db .dbcos .dbrnd .dbsin .define .def .ds .dsb .dstruct .dsw .dw .dwcos .dwrnd .dwsin .else .enda .endasm .endb .ende .endif .endm .endme .endr .endro .ends .endst .enum .equ .fail .fclose .fopen .fread .fsize .if .ifdef .ifdefm .ifeq .ifexists .ifgr .ifgreq .ifle .ifleeq .ifndef .ifndefm .ifneq .incbin .incdir .include .input .macro .memorymap .org .orga .printt .printv .ramsection .redefine .redef .repeat .rept .rombankmap .rombanks .seed .section .shift .slot .struct .sym .symbol .unbackground .undefine .undef .word
// WLA keyword parameters and special things
KeyWords5: align args asc bank banks banksize bankstotal data db defaultslot desc ds dsb dsw dw export force free fsize instanceof map nargs overwrite read returnorg semifree size skip slot slotsize start superfree swap to
//////////////////////////////////////////////////////////////////////////////
// string delimiter: StringBegChar - string begin char
// StringEndChar - string end char
// MultilineStrings - enables multiline strings, as perl
// has it
StringBegChar: "
StringEndChar: "
MultilineStrings: 0
//////////////////////////////////////////////////////////////////////////////
// use preprocessor: 0 - no
// 1 - yes
// note: if yes, '#' and statements after it will be
// highlighted with Preprocessor defined colors
UsePreprocessor: 0
//////////////////////////////////////////////////////////////////////////////
// highlight line: 0 - no
// 1 - yes
// note: if yes, current line will be highlighted
CurrLineHighlighted: 0
//////////////////////////////////////////////////////////////////////////////
// colors
// note: first value is foreground, second is background color
// and third (optional) represents font attribute:
// B - bold
// I - italic
// U - underline
// S - strike out
// attributes can be combined: eg. B or BI
// as value, it could be used any standard windows color:
// clBlack, clMaroon, clGreen, clOlive, clNavy,
// clPurple, clTeal, clGray, clSilver, clRed, clLime,
// clYellow, clBlue, clFuchsia, clAqua, clLtGray,
// clDkGray, clWhite, clScrollBar, clBackground,
// clActiveCaption, clInactiveCaption, clMenu, clWindow,
// clWindowFrame, clMenuText, clWindowText, clCaptionText,
// clActiveBorder, clInactiveBorder, clAppWorkSpace,
// clHighlight, clHighlightText, clBtnFace, clBtnShadow,
// clGrayText, clBtnText, clInactiveCaptionText,
// clBtnHighlight, cl3DDkShadow, cl3DLight, clInfoText,
// clInfoBk
// as value, it could be used hex numeric constant too:
// $BBGGRR - BB: blue, GG: green, RR: red, eg: $FF6A00
SpaceCol: clWindowText clWindow
Keyword1Col: clNavy clWindow B
Keyword2Col: clPurple clWindow B
Keyword3Col: clNavy clWindow BI
IdentifierCol: clWindowText clWindow I
CommentCol: clNavy clWindow I
NumberCol: clRed clWindow
StringCol: clMaroon clWindow
SymbolCol: clGray clWindow
PreprocessorCol: clBlue clWindow
SelectionCol: clBlack $00C0C0C0
CurrentLineCol: clBlack $00FFFF00
OverrideTxtFgColor: 0
BlockAutoindent: 0
BlockBegStr:
BlockEndStr:
Keyword4Col: $00FF4040 clWindow
Keyword5Col: $00FF4040 clWindow I
MatchedBracesCol: clWindowText clGray

View File

@ -0,0 +1,64 @@
<NotepadPlus>
<UserLang name="Z80 Assembly" ext="asm" udlVersion="2.1">
<Settings>
<Global caseIgnored="yes" allowFoldOfComments="yes" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
<Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
</Settings>
<KeywordLists>
<Keywords name="Comments">00; 01 02 03/* 04*/</Keywords>
<Keywords name="Numbers, prefix1">%</Keywords>
<Keywords name="Numbers, prefix2">$</Keywords>
<Keywords name="Numbers, extras1">A B C D E F a b c d e f</Keywords>
<Keywords name="Numbers, extras2"></Keywords>
<Keywords name="Numbers, suffix1">h</Keywords>
<Keywords name="Numbers, suffix2"></Keywords>
<Keywords name="Numbers, range"></Keywords>
<Keywords name="Operators1">( ) [ ] | &amp; ^ &lt;&lt; &gt;&gt; + - # ~ * / &lt; &gt; , :</Keywords>
<Keywords name="Operators2"></Keywords>
<Keywords name="Folders in code1, open">.section .struct .enum .macro .memorymap .rombankmap .endasm .block .asciitable .asctable .rept .repeat .smsheader .ramsection .union</Keywords>
<Keywords name="Folders in code1, middle">.nextu</Keywords>
<Keywords name="Folders in code1, close">.endst .ends .endme .endro .ende .endm .asm .endb .enda .endr .endsms .endu</Keywords>
<Keywords name="Folders in code2, open">.ifndef .if .ifeq .ifdef .ifexists .ifdefm .ifndefm .ifneq .ifle .ifleeq .ifgr .ifgreq</Keywords>
<Keywords name="Folders in code2, middle">.else</Keywords>
<Keywords name="Folders in code2, close">.endif</Keywords>
<Keywords name="Folders in comment, open"></Keywords>
<Keywords name="Folders in comment, middle"></Keywords>
<Keywords name="Folders in comment, close"></Keywords>
<Keywords name="Keywords1">###Opcodes&#x000D;&#x000A;ex exx ld ldd lddr ldi ldir pop push adc add cp cpd cpdr cpi cpir cpl daa dec inc neg sbc sub and bit ccf or res scf set xor rl rla rlc rlca rld rr rra rrc rrca rrd sla sra srl call djnz jp jr nop ret reti retn rst di ei halt im in ind indr ini inir otdr otir out outd outi</Keywords>
<Keywords name="Keywords2">###registers&#x000D;&#x000A;a af b bc c d de e h hl i ix iy l r sp af&apos; </Keywords>
<Keywords name="Keywords3">###wackyregisters&#x000D;&#x000A;hx hy ixh ixl sll iyh iyl lx ly</Keywords>
<Keywords name="Keywords4">###directiveparams&#x000D;&#x000A;overwrite free force semifree superfree desc asc export slot skip read swap fsize instanceof data map to defaultslot slotsize start size bankstotal banksize banks returnorg align dec hex step productcode version regioncode reservedspace romsize namespace once filter values name offset keep semisubfree bank appendto</Keywords>
<Keywords name="Keywords5">###enumentries&#x000D;&#x000A;byte byt db word dw addr long dl faraddr ds dsb dsw dsl</Keywords>
<Keywords name="Keywords6">###conditions&#x000D;&#x000A;z nz pe po m c</Keywords>
<Keywords name="Keywords7">###onelinemacros&#x000D;&#x000A;.define .def .equ .redefine .undefine .undef .redef .bank .slot .org .orga .db .byt .ds .dsb .dw .word .addr .dl .long .dsw .dsl .dbm .dwm .dlm .asc .ascii .include .inc .incbin .dbrnd .dwrnd .dbcos .dbsin .dwcos .dwsin .rombanks .emptyfill .computesmschecksum .smstag .sdsctag .incdir .input .background .unbackground .fail .fclose .fopen .fread .fsize .shift .rombanksize .dstruct .symbol .sym .br .breakpoint .seed .export .print .printt .printv .outname .enumid .table .row .data</Keywords>
<Keywords name="Keywords8">CADDR WLA_FILENAME WLA_TIME WLA_VERSION</Keywords>
<Keywords name="Delimiters">00 01 02 03&quot; 04\ 05&quot; 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
</KeywordLists>
<Styles>
<WordsStyle name="DEFAULT" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="COMMENTS" fgColor="797979" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="256" />
<WordsStyle name="LINE COMMENTS" fgColor="797979" bgColor="2E2E2E" fontName="" fontStyle="2" nesting="256" />
<WordsStyle name="NUMBERS" fgColor="9E86C8" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS1" fgColor="6C99BB" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS2" fgColor="B4D273" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS3" fgColor="B4D273" bgColor="2E2E2E" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS4" fgColor="C0C0C0" bgColor="2E2E2E" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS5" fgColor="6C99BB" bgColor="2E2E2E" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS6" fgColor="E87D3E" bgColor="2E2E2E" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="KEYWORDS7" fgColor="E87D3E" bgColor="2E2E2E" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS8" fgColor="E5B567" bgColor="2E2E2E" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="OPERATORS" fgColor="B05279" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE1" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="FOLDER IN CODE2" fgColor="6C99BB" bgColor="2E2E2E" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="FOLDER IN COMMENT" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS1" fgColor="9E86C8" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS2" fgColor="9E86C8" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS3" fgColor="9E86C8" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS4" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS5" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS6" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS7" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS8" fgColor="D6D6D6" bgColor="2E2E2E" fontName="" fontStyle="0" nesting="0" />
</Styles>
</UserLang>
</NotepadPlus>

View File

@ -0,0 +1,64 @@
<NotepadPlus>
<UserLang name="Z80 Assembly" ext="asm" udlVersion="2.1">
<Settings>
<Global caseIgnored="yes" allowFoldOfComments="yes" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
<Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
</Settings>
<KeywordLists>
<Keywords name="Comments">00; 01 02 03/* 04*/</Keywords>
<Keywords name="Numbers, prefix1">%</Keywords>
<Keywords name="Numbers, prefix2">$</Keywords>
<Keywords name="Numbers, extras1">A B C D E F a b c d e f</Keywords>
<Keywords name="Numbers, extras2"></Keywords>
<Keywords name="Numbers, suffix1">h</Keywords>
<Keywords name="Numbers, suffix2"></Keywords>
<Keywords name="Numbers, range"></Keywords>
<Keywords name="Operators1">( ) [ ] | &amp; ^ &lt;&lt; &gt;&gt; + - # ~ * / &lt; &gt; , :</Keywords>
<Keywords name="Operators2"></Keywords>
<Keywords name="Folders in code1, open">.section .struct .enum .macro .memorymap .rombankmap .endasm .block .asciitable .asctable .rept .repeat .smsheader .ramsection .union</Keywords>
<Keywords name="Folders in code1, middle">.nextu</Keywords>
<Keywords name="Folders in code1, close">.endst .ends .endme .endro .ende .endm .asm .endb .enda .endr .endsms .endu</Keywords>
<Keywords name="Folders in code2, open">.ifndef .if .ifeq .ifdef .ifexists .ifdefm .ifndefm .ifneq .ifle .ifleeq .ifgr .ifgreq</Keywords>
<Keywords name="Folders in code2, middle">.else</Keywords>
<Keywords name="Folders in code2, close">.endif</Keywords>
<Keywords name="Folders in comment, open"></Keywords>
<Keywords name="Folders in comment, middle"></Keywords>
<Keywords name="Folders in comment, close"></Keywords>
<Keywords name="Keywords1">###Opcodes&#x000D;&#x000A;ex exx ld ldd lddr ldi ldir pop push adc add cp cpd cpdr cpi cpir cpl daa dec inc neg sbc sub and bit ccf or res scf set xor rl rla rlc rlca rld rr rra rrc rrca rrd sla sra srl call djnz jp jr nop ret reti retn rst di ei halt im in ind indr ini inir otdr otir out outd outi</Keywords>
<Keywords name="Keywords2">###registers&#x000D;&#x000A;a af b bc c d de e h hl i ix iy l r sp af&apos; </Keywords>
<Keywords name="Keywords3">###wackyregisters&#x000D;&#x000A;hx hy ixh ixl sll iyh iyl lx ly</Keywords>
<Keywords name="Keywords4">###directiveparams&#x000D;&#x000A;overwrite free force semifree superfree desc asc export slot skip read swap fsize instanceof data map to defaultslot slotsize start size bankstotal banksize banks returnorg align dec hex step productcode version regioncode reservedspace romsize namespace once filter values name offset keep semisubfree bank appendto</Keywords>
<Keywords name="Keywords5">###enumentries&#x000D;&#x000A;byte byt db word dw addr long dl faraddr ds dsb dsw dsl</Keywords>
<Keywords name="Keywords6">###conditions&#x000D;&#x000A;z nz pe po m c</Keywords>
<Keywords name="Keywords7">###onelinemacros&#x000D;&#x000A;.define .def .equ .redefine .undefine .undef .redef .bank .slot .org .orga .db .byt .ds .dsb .dw .word .addr .dl .long .dsw .dsl .dbm .dwm .dlm .asc .ascii .include .inc .incbin .dbrnd .dwrnd .dbcos .dbsin .dwcos .dwsin .rombanks .emptyfill .computesmschecksum .smstag .sdsctag .incdir .input .background .unbackground .fail .fclose .fopen .fread .fsize .shift .rombanksize .dstruct .symbol .sym .br .breakpoint .seed .export .print .printt .printv .outname .enumid .table .row .data</Keywords>
<Keywords name="Keywords8">CADDR WLA_FILENAME WLA_TIME WLA_VERSION</Keywords>
<Keywords name="Delimiters">00 01 02 03&quot; 04\ 05&quot; 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
</KeywordLists>
<Styles>
<WordsStyle name="DEFAULT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="COMMENTS" fgColor="800000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="256" />
<WordsStyle name="LINE COMMENTS" fgColor="007F00" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="256" />
<WordsStyle name="NUMBERS" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS1" fgColor="0000EF" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS2" fgColor="800000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS3" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS4" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS5" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS6" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
<WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="KEYWORDS8" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="3" nesting="0" />
<WordsStyle name="OPERATORS" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE1" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="FOLDER IN CODE2" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
<WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS1" fgColor="7F007F" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS2" fgColor="7F007F" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS3" fgColor="800080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
</Styles>
</UserLang>
</NotepadPlus>

View File

@ -0,0 +1,80 @@
#Emulicious Key Bindings
#Thu Jan 28 02:10:59 CET 2021
DebuggerKeysGoToWhen=0
DebuggerKeysOpenBreakpointsWindow=ctrl pressed B
DebuggerKeysOpenCoverageWindow=ctrl pressed K
DebuggerKeysProfileFromLineWhen=0
DebuggerKeysSuspend=pressed F6
DebuggerKeysToggleBreakpoint=pressed F9
DebuggerKeysGoToNextAddressWhen=0
DebuggerKeysSaveAsWhen=0
DebuggerKeysTraceFromLine=ctrl alt pressed T
KeysOpenDebuggerWhen=1
DebuggerKeysGoToDestinationWhen=0
DebuggerKeysStepOverWhen=2
DebuggerKeysNavigateForwardWhen=0
DebuggerKeysStepInto=pressed F11
KeysOpenTilemapViewer=pressed F3
DebuggerKeysUndoWhen=0
DebuggerKeysOpenReferenceHierarchy=shift pressed F12
DebuggerKeysOpenRamSearchWindow=ctrl pressed E
DebuggerKeysRunToLineWhen=0
DebuggerKeysStepReturnWhen=2
DebuggerKeysResume=pressed F5
KeysOpenMemoryEditor=pressed F2
DebuggerKeysAdvanceFrame=ctrl pressed F5
DebuggerKeysRedoWhen=0
DebuggerKeysReloadSymbolsWhen=0
DebuggerKeysGoToPrevAddress=ctrl pressed LEFT
DebuggerKeysOpenRamWatchWindow=ctrl pressed W
DebuggerKeysGoToPrevAddressWhen=0
DebuggerKeysOpenBreakpointsWindowWhen=0
DebuggerKeysAdvanceFrameWhen=2
DebuggerKeysRunToLine=ctrl pressed R
DebuggerKeysJumpToLine=ctrl pressed J
DebuggerKeysStepOver=pressed F10
DebuggerKeysJumpToLineWhen=0
DebuggerKeysOpenRamSearchWindowWhen=0
DebuggerKeysToggleBreakpointWhen=0
DebuggerKeysOpenTracerWindow=ctrl pressed T
KeysOpenMemoryEditorWhen=1
DebuggerKeysSelectInMemoryEditor=ctrl alt pressed M
DebuggerKeysTraceFromLineWhen=0
DebuggerKeysUndo=ctrl pressed Z
DebuggerKeysSelectInMemoryEditorWhen=0
DebuggerKeysOpenReferenceHierarchyWhen=0
DebuggerKeysResumeWhen=2
DebuggerKeysOpenRamWatchWindowWhen=0
DebuggerKeysStepReturn=shift pressed F11
DebuggerKeysOpenPlotterWindow=ctrl pressed O
DebuggerKeysStepIntoWhen=2
DebuggerKeysFindWhen=0
DebuggerKeysOpenTracerWindowWhen=0
KeysOpenDebugger=pressed F1
DebuggerKeysLoadSymbolsWhen=0
DebuggerKeysSuspendWhen=2
DebuggerKeysReloadSymbols=ctrl pressed M
DebuggerKeysProfileToNextLine=shift ctrl alt pressed P
DebuggerKeysGoToNextAddress=ctrl pressed RIGHT
KeysOpenTileViewer=pressed F4
DebuggerKeysProfileFromLine=ctrl alt pressed P
DebuggerKeysOpenProfilerWindowWhen=0
KeysOpenTilemapViewerWhen=1
DebuggerKeysOpenCoverageWindowWhen=0
DebuggerKeysGoTo=ctrl pressed G
DebuggerKeysFind=ctrl pressed F
DebuggerKeysRedo=ctrl pressed Y
DebuggerKeysWatchWhen=0
DebuggerKeysGoToCurrentInstructionWhen=0
DebuggerKeysWatch=ctrl alt pressed W
DebuggerKeysLoadSymbols=ctrl pressed L
DebuggerKeysProfileToNextLineWhen=0
DebuggerKeysNavigateForward=alt pressed RIGHT
KeysOpenTileViewerWhen=1
DebuggerKeysOpenProfilerWindow=ctrl pressed P
DebuggerKeysNavigateBack=alt pressed LEFT
DebuggerKeysNavigateBackWhen=0
DebuggerKeysSaveAs=ctrl pressed S
DebuggerKeysGoToDestination=pressed F12
DebuggerKeysOpenPlotterWindowWhen=0
DebuggerKeysGoToCurrentInstruction=pressed SPACE

80
tools/KeyPresets/bgb.ini Normal file
View File

@ -0,0 +1,80 @@
#Emulicious Key Bindings
#Thu Jan 28 02:10:20 CET 2021
DebuggerKeysGoToWhen=0
DebuggerKeysOpenBreakpointsWindow=ctrl pressed B
DebuggerKeysOpenCoverageWindow=ctrl pressed K
DebuggerKeysProfileFromLineWhen=0
DebuggerKeysSuspend=pressed ESCAPE
DebuggerKeysToggleBreakpoint=pressed F2
DebuggerKeysGoToNextAddressWhen=0
DebuggerKeysSaveAsWhen=0
DebuggerKeysTraceFromLine=ctrl alt pressed T
KeysOpenDebuggerWhen=1
DebuggerKeysGoToDestinationWhen=0
DebuggerKeysStepOverWhen=2
DebuggerKeysNavigateForwardWhen=0
DebuggerKeysStepInto=pressed F7
KeysOpenTilemapViewer=<unassigned>
DebuggerKeysUndoWhen=0
DebuggerKeysOpenReferenceHierarchy=ctrl alt pressed H
DebuggerKeysOpenRamSearchWindow=ctrl pressed E
DebuggerKeysRunToLineWhen=0
DebuggerKeysStepReturnWhen=2
DebuggerKeysResume=pressed F9
KeysOpenMemoryEditor=<unassigned>
DebuggerKeysAdvanceFrame=ctrl pressed F5
DebuggerKeysRedoWhen=0
DebuggerKeysReloadSymbolsWhen=0
DebuggerKeysGoToPrevAddress=ctrl pressed LEFT
DebuggerKeysOpenRamWatchWindow=ctrl pressed W
DebuggerKeysGoToPrevAddressWhen=0
DebuggerKeysOpenBreakpointsWindowWhen=0
DebuggerKeysAdvanceFrameWhen=2
DebuggerKeysRunToLine=pressed F4
DebuggerKeysJumpToLine=pressed F6
DebuggerKeysStepOver=pressed F3
DebuggerKeysJumpToLineWhen=0
DebuggerKeysOpenRamSearchWindowWhen=0
DebuggerKeysToggleBreakpointWhen=0
DebuggerKeysOpenTracerWindow=ctrl pressed T
KeysOpenMemoryEditorWhen=1
DebuggerKeysSelectInMemoryEditor=ctrl alt pressed M
DebuggerKeysTraceFromLineWhen=0
DebuggerKeysUndo=ctrl pressed Z
DebuggerKeysSelectInMemoryEditorWhen=0
DebuggerKeysOpenReferenceHierarchyWhen=0
DebuggerKeysResumeWhen=2
DebuggerKeysOpenRamWatchWindowWhen=0
DebuggerKeysStepReturn=pressed F8
DebuggerKeysOpenPlotterWindow=ctrl pressed O
DebuggerKeysStepIntoWhen=2
DebuggerKeysFindWhen=0
DebuggerKeysOpenTracerWindowWhen=0
KeysOpenDebugger=<unassigned>
DebuggerKeysLoadSymbolsWhen=0
DebuggerKeysSuspendWhen=2
DebuggerKeysReloadSymbols=ctrl pressed M
DebuggerKeysProfileToNextLine=shift ctrl alt pressed P
DebuggerKeysGoToNextAddress=ctrl pressed RIGHT
KeysOpenTileViewer=<unassigned>
DebuggerKeysProfileFromLine=ctrl alt pressed P
DebuggerKeysOpenProfilerWindowWhen=0
KeysOpenTilemapViewerWhen=1
DebuggerKeysOpenCoverageWindowWhen=0
DebuggerKeysGoTo=ctrl pressed G
DebuggerKeysFind=ctrl pressed F
DebuggerKeysRedo=ctrl pressed Y
DebuggerKeysWatchWhen=0
DebuggerKeysGoToCurrentInstructionWhen=0
DebuggerKeysWatch=ctrl alt pressed W
DebuggerKeysLoadSymbols=ctrl pressed L
DebuggerKeysProfileToNextLineWhen=0
DebuggerKeysNavigateForward=alt pressed RIGHT
KeysOpenTileViewerWhen=1
DebuggerKeysOpenProfilerWindow=ctrl pressed P
DebuggerKeysNavigateBack=alt pressed LEFT
DebuggerKeysNavigateBackWhen=0
DebuggerKeysSaveAs=ctrl pressed S
DebuggerKeysGoToDestination=pressed F12
DebuggerKeysOpenPlotterWindowWhen=0
DebuggerKeysGoToCurrentInstruction=ctrl pressed A

1
tools/LICENSE-JInput.txt Normal file
View File

@ -0,0 +1 @@
JInput is licensed under BSD License (https://opensource.org/licenses/BSD-3-Clause).

16
tools/License.txt Normal file
View File

@ -0,0 +1,16 @@
Copyright (c) 2013-2023, Michael Stegmaier (Calindro)
https://www.emulicious.net
All rights reserved.
Permission to use, copy and distribute Emulicious in binary form,
for non-commercial purposes, is hereby granted without fee,
providing that this license information and copyright notice appear with
all copies.
This software is provided 'as-is', without any express or implied
warranty. In no event shall the authors be held liable for any damages
arising from the use of this software.
Emulicious is freeware for PERSONAL USE only. Commercial users should
seek permission of the copyright holders first. Commercial use includes
charging money for Emulicious.

13
tools/MSX.ports Normal file
View File

@ -0,0 +1,13 @@
98 Port_VDPData
99 Port_VDPAddress out
99 Port_VDPStatus in
9a Port_VDPPalette out
9b Port_VDPRegisterWrite out
a0 Port_PSGRegister out
a1 Port_PSGData out
a2 Port_PSGData in
a9 Port_Keyboard in
fc Port_RAMMapper0 out
fd Port_RAMMapper1 out
fe Port_RAMMapper2 out
ff Port_RAMMapper3 out

231
tools/MSX/cbios.txt Normal file
View File

@ -0,0 +1,231 @@
C-BIOS 0.29
===========
This software is a substitute BIOS which is can be used for running MSX
emulators. It currently supports only execution of cartridge image ("ROMs").
Before you use it, you should read and accept the license (see below).
On the C-BIOS web site, you can download newer versions, download the source
code, and report bugs.
http://cbios.sourceforge.net/
License
-------
Copyright (c) 2002-2005 BouKiCHi. All rights reserved.
Copyright (c) 2003 Reikan. All rights reserved.
Copyright (c) 2004-2006,2008-2010 Maarten ter Huurne. All rights reserved.
Copyright (c) 2004-2006,2008-2011 Albert Beevendorp. All rights reserved.
Copyright (c) 2004-2005 Patrick van Arkel. All rights reserved.
Copyright (c) 2004,2010-2011 Manuel Bilderbeek. All rights reserved.
Copyright (c) 2004-2006 Joost Yervante Damad. All rights reserved.
Copyright (c) 2004-2006 Jussi Pitkänen. All rights reserved.
Copyright (c) 2004-2007 Eric Boon. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
History
-------
ver 0.01 Initial
ver 0.02 2002-08-15(JST)
* Added original font and drawing screen.
* Added dump-mode.
* Changed recognition method of cartridges
to recognize cartridges taking priority.
ver 0.03 2002-08-19(JST)
* Based on a suggestion from Ms.Okei,
wrote 20h of BIOS(compare HL and DE).
In the result, shooting game of a certain company became runnable
more correctly.
Thank Ms.Okei!!
ver 0.04 2002-08-20(JST)
* Added initialize of FCC2h-FCC4h.
* Added function of GTSTCK and GTTRIG temporarily.
* Divided msxb.bin to halfs.
doing combining/copying with setb.bat now.
ver 0.05 2002-08-27(JST)
* Added INITGRP(only screen2), CHGMOD(graphic mode change routine),
a routine calls H.STKE.
* Rewrite memory recognition routine.
* Some bug fixes.
* Added sound test function.
ver 0.06 2002-09-01(JST)
* Fixed around of color.
ver 0.07 2002-09-09(JST)
* Added some sorts of keyboard routines.
* Added joystich function to GTSTCK and GTTRIG.
ver 0.08 2002-09-12(JST)
* Restructured memory initialize routine.
* Added error display routine.
* Fixed routine of finding kinds of cartridges.
* Fixed using method of EXPTBL.
* Added initialize of from RG8SAV to RG23SA.
* Now return within disabled interrupt from ENASLT routine.
ver 0.09 2002-09-19(JST)
* Made the rest half of font.
* Improved key input routine.
* Added CHPUT. With it, rewrote display routine.
* Fixed init_grp.
* Changed filenames to CBIOS.ROM, CBIOS_SUB.ROM.
ver 0.10 2002-09-20(JST)
* Fixed indent.
* and so on...
ver 0.10a 2002-09-22(JST)
* Fixed license.
* Added support of ROMs in page3.
ver 0.11 2002-09-22(JST)
* Small fix in init_sc5.
ver 0.12beta
2002-09-25(JST)
* Added test routine for disk access. need DISK.ROM.
* Added init_sc7.
* Improved ENASLT. now finding cartridge uses ENASLT.
* Improved RAM detection.
ver 0.12 2002-09-27(JST)
* Changed finding cartridge again.
* Changed screen mode of cartridge running time.
* Fixed keyboard routine.
* Fixed stick routine against to interrupt.
ver 0.13 2002-10-02(JST)
* Based on info from Mr.Maarten (a member of openMSX developers),
fixed around of SCREEN 5.
For detail, switching line numbers,
temporary treatment for a bug of reading from VDP status register,
and so on.
ver 0.14 2002-10-10(JST)
* Rewrote comments in source within Japanese.
ver 0.15 2003-02-26(JST)
* Rewrote some of comments back to English again.
* Fixed non-assemblable condition becauseof lack of font file.
* Changed filename, some of label name, strings and so on.
ver 0.16 2003-04-16(JST)
* Separated sound test from source. (Disabled)
ver 0.16a 2003-06-01(JST)
* CHGMOD: When screen0/1, now load font to VRAM.
* CHPUT: Now support also screen1 not only screen0.
ver 0.16b 2003-08-10(JST)
* Added entry: INITXT, INIT32.
These were exist only as internal routine of CHGMOD.
* INITXT, INIT32: Fixed screen clear failure.
* CHPUT: Fixed scroll failure.
ver 0.17 2003-08-10(JST)
* Changed LICENSE.
New LICENSE will be suitable in various situations.
e.g. use as a firmware for hand-made hardware.
ver 0.18 2004-12-18(CET)
* First release since moving to SourceForge.
* Much improved support for MSX2 games.
* Graphical boot logo.
* Included machine config files for several MSX emulators.
* Various bug fixes.
ver 0.19 2004-12-24(CET)
* Added support for SCREEN4 and SCREEN8.
* Added support for clock chip.
* Added support for palette. This fixes a lot of wrong colours.
* Stubbed many calls: non-implemented calls print their name on the
openMSX debugdevice (if present).
* Various bug fixes.
ver 0.20 2005-02-09(CET)
* Added an MSX2+ configuration, which includes V9958 and MSX MUSIC.
* Separate main ROMs for MSX1/MSX2/MSX2+.
* Implemented several MSX2 specific routines, including BLT*.
* Display is disabled when switching to a different screen mode.
* Improved CHPUT a lot; implemented control and escape codes.
* Rewrote key buffering; fixes bug of keys being repeated.
* New boot logo, even cooler than the previous one.
* New font, placed at a fixed address so all games can find it.
* Started work on a disk ROM, but it is not functional yet, so it
is not enabled in the configurations.
* Stubbed all non-implemented calls.
* Various bug fixes.
ver 0.21 2005-06-07(CET)
* Fixed RuMSX configuration files, thanks to Rudolf Lechleitner.
* Rewrote ROM search code; now all ROMs are recognized.
Also a clear error message is printed for BASIC ROMs.
* New boot logo for MSX2 and MSX2+.
* Changed boot sequence:
Show logo, switch to SCREEN 1 and search for ROMs.
* Improved video code; fixes several games.
* Various bug fixes.
ver 0.22 2008-12-27(CET)
* Use separate logo ROM to save space in the main ROM.
* Set lower bits of PSG reg 15 before reading joystick trigger status.
* Improved RAM search.
* Many new routines implemented and existing implementations made
more complete, especially character I/O and bitmap graphics.
* Added lots of documentation to system variables.
* Added support for GNU assembler.
* Various bug fixes.
ver 0.23 2009-01-04(CET)
* Updated blueMSX configuration files, thanks to Benoît Delvaux.
* Fixed version reported by MSX1 logo ROM.
* Fixed several video routines so they work on MSX1 VDPs (TMS99xx).
* A couple of other bug fixes.
ver 0.24 2010-05-24(CET)
* VRAM size is now properly checked, fixing R-Type's V9938 detection.
* C-BIOS doesn't lie anymore about the interrupt frequency.
* Don't di; halt when no ROM is found, the warning in openMSX may be
confusing
* A few minor bug fixes and tweaks.
ver 0.25 2011-02-01(CET)
* C-BIOS now offers localized versions in the flavours INT (default),
JP and BR.
* Bug fixes for compatibility with Mirai, Family Billiards.
* A couple of other bug fixes.
* This version only compiles with Pasmo 0.5.3, due to lack of
standards in assembler directives...
ver 0.26 2014-11-02(CET)
* Restored support to compile with tniASM (v1.0 Beta 17 or higher)
* Moved to git, which means a.o.: archived changelog.txt, use git log
from now on
* Fixed VDP VRAM access timing for MSX1 VDP's
* Update openMSX configurations to the new structure
* Fixed bug blueMSX configurations
* Fixed build on Mac OS X and add support for "make dist"
ver 0.27 2014-11-05(CET)
* Fixed bug (regression) in filvrm on non-MSX1-VDP's
* Fixed some small bugs in openMSX configs
* Fixed line endings of this file
ver 0.28 2017-07-30(CEST)
* Fixed bug that prevented brackets and a few other keys from
generating characters when pressed
ver 0.29 2018-02-18(CET)
* Removed NLMSX configs. We don't think anyone is interested anymore
* Made generic international ROM config 60Hz and added an EU variant
at 50Hz default interrupt frequency
ver 0.29a 2018-09-23(CEST)
* Fixed metadata in openMSX configs for EU machines
Special Thanks
--------------
People uploading MSX information to the internet.
People developing any kind of emulators.
All users.
Font edit tool:
Gameboy Tile Designer version 2.2
Copyright H. Mulder 1999

BIN
tools/MSX/cbios_msx1.rom Normal file

Binary file not shown.

BIN
tools/MSX/cbios_msx2.rom Normal file

Binary file not shown.

BIN
tools/MSX/cbios_sub.rom Normal file

Binary file not shown.

13
tools/MasterSystem.ports Normal file
View File

@ -0,0 +1,13 @@
3e Port_MemoryControl out
3f Port_IOPortControl out
7e Port_VCounter in
7f Port_PSG out
7f Port_HCounter in
be Port_VDPData
bf Port_VDPAddress out
bf Port_VDPStatus in
dc Port_IOPort1 in
dd Port_IOPort2 in
f0 Port_FMAddress
f1 Port_FMData
f2 Port_AudioControl

48
tools/ReadMe.txt Normal file
View File

@ -0,0 +1,48 @@
Emulicious
Project Homepage: https://www.emulicious.net
Discord Server: https://discord.gg/YuKjBUF
VS Code Extension: https://marketplace.visualstudio.com/items?itemName=emulicious.emulicious-debugger
This program is distributed under the attached license. See License.txt.
=================
Special Thanks
=================
PG Lomba - Visual identity design
=================
Required Runtimes
=================
Java 6 or newer:
http://www.java.com
===============
Troubleshooting
===============
There have been reports of bad performance on Windows 11. This seems to be a driver issue. You can either update your drivers or disable Hardware Acceleration.
On Windows with high-dpi screens, Windows applies some scaling which causes fonts to appear blurry. You can fix this by letting the application handle the scaling.
You can find this via right-click on Emulicious.exe -> Properties -> Compatibility -> Change High DPI Settings -> Tick the checkbox at the bottom and select Application.
====================
Commandline Commands
====================
-muted = start without sound (can still be manually enabled, see controls below)
-scale [level] = start with given zoom level
-link [address] = connects your Emulicious via link with the given address (e.g. "-link localhost" to connect to yourself)
-linkport [port] = specifies to port to use with the -link option (default is 5887, if not specified)
-fullscreen = Start provided rom in fullscreen mode
-set [key=value] = Set a property. E.g. "-set SMSFM=true"
-throttle [speed] = throttles the speed to the given value in percent
-disassemble [file] = Disassemble the provided file. If a directory is provided, all contained files are disassembled.
=================
Expressions
=================
Expressions are used in many places in the Debugger.
For explanations and examples checkout Expressions.txt.
==========
What's New
==========
To keep track on what's new check out WhatsNew.txt.
It also contains explanations of some features.

1154
tools/WhatsNew.txt Normal file

File diff suppressed because it is too large Load Diff

69
tools/java/COPYRIGHT Normal file
View File

@ -0,0 +1,69 @@
Copyright © 1993, 2018, Oracle and/or its affiliates.
All rights reserved.
This software and related documentation are provided under a
license agreement containing restrictions on use and
disclosure and are protected by intellectual property laws.
Except as expressly permitted in your license agreement or
allowed by law, you may not use, copy, reproduce, translate,
broadcast, modify, license, transmit, distribute, exhibit,
perform, publish, or display any part, in any form, or by
any means. Reverse engineering, disassembly, or
decompilation of this software, unless required by law for
interoperability, is prohibited.
The information contained herein is subject to change
without notice and is not warranted to be error-free. If you
find any errors, please report them to us in writing.
If this is software or related documentation that is
delivered to the U.S. Government or anyone licensing it on
behalf of the U.S. Government, the following notice is
applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any
operating system, integrated software, any programs
installed on the hardware, and/or documentation, delivered
to U.S. Government end users are "commercial computer
software" pursuant to the applicable Federal Acquisition
Regulation and agency-specific supplemental regulations. As
such, use, duplication, disclosure, modification, and
adaptation of the programs, including any operating system,
integrated software, any programs installed on the hardware,
and/or documentation, shall be subject to license terms and
license restrictions applicable to the programs. No other
rights are granted to the U.S. Government.
This software or hardware is developed for general use in a
variety of information management applications. It is not
developed or intended for use in any inherently dangerous
applications, including applications that may create a risk
of personal injury. If you use this software or hardware in
dangerous applications, then you shall be responsible to
take all appropriate fail-safe, backup, redundancy, and
other measures to ensure its safe use. Oracle Corporation
and its affiliates disclaim any liability for any damages
caused by use of this software or hardware in dangerous
applications.
Oracle and Java are registered trademarks of Oracle and/or
its affiliates. Other names may be trademarks of their
respective owners.
Intel and Intel Xeon are trademarks or registered trademarks
of Intel Corporation. All SPARC trademarks are used under
license and are trademarks or registered trademarks of SPARC
International, Inc. AMD, Opteron, the AMD logo, and the AMD
Opteron logo are trademarks or registered trademarks of
Advanced Micro Devices. UNIX is a registered trademark of
The Open Group.
This software or hardware and documentation may provide
access to or information on content, products, and services
from third parties. Oracle Corporation and its affiliates
are not responsible for and expressly disclaim all
warranties of any kind with respect to third-party content,
products, and services. Oracle Corporation and its
affiliates will not be responsible for any loss, costs, or
damages incurred due to your access to or use of third-party
content, products, or services.

1
tools/java/LICENSE Normal file
View File

@ -0,0 +1 @@
Please refer to http://java.com/license

1
tools/java/README.txt Normal file
View File

@ -0,0 +1 @@
Please refer to http://java.com/licensereadme

File diff suppressed because it is too large Load Diff

28
tools/java/Welcome.html Normal file
View File

@ -0,0 +1,28 @@
<html>
<head>
<title>
Welcome to the Java(TM) Platform
</title>
</head>
<body>
<h2>Welcome to the Java<SUP><FONT SIZE=-2>TM</FONT></SUP> Platform</h2>
<p> Welcome to the Java<SUP><FONT SIZE=-2>TM</FONT></SUP> Standard Edition Runtime
Environment. This provides complete runtime support for Java applications.
<p> The runtime environment includes the Java<SUP><FONT SIZE=-2>TM</FONT></SUP>
Plug-in product which supports the Java environment inside web browsers.
<h3>References</h3>
<p>
See the <a href="http://download.oracle.com/javase/7/docs/technotes/guides/plugin/">Java Plug-in</a> product
documentation for more information on using the Java Plug-in product.
<p> See the <a href=
"http://www.oracle.com/technetwork/java/javase/overview/"
>Java Platform</a> web site for
more information on the Java Platform.
<hr>
<font size="-2">
Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
</font>
<p>
</body>
</html>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More