-src = $(wildcard src/*.asm)
+src = $(wildcard src/boot/*.asm) $(wildcard src/*.asm)
+obj = $(src:.asm=.o)
data = data/sprsheet.inc
-bin = game
+name = game
+elf = $(name).elf
+bin = $(name).bin
-QEMU_FLAGS = -fda floppy.img -serial file:serial.log -soundhw sb16 -d guest_errors
+ASFLAGS = -f elf32 -i src/
+LDFLAGS = -m elf_i386 -T game.ld -print-gc-sections
+
+QEMU_FLAGS = -fda floppy.img -serial file:serial.log -d guest_errors
.PHONY: all
-all: floppy.img
+all: floppy.img disk.img
-bootldr: src/boot/boot.asm $(bin)
- nasm -o $@ -f bin -DBINSIZE=`ls -l $(bin) | awk '{print $$5}'` $<
+disk.img: boot.img blank.img
+ cp blank.img $@
+ dd of=$@ if=$< conv=notrunc
+ dd of=$@ if=blank.img bs=1 seek=440 skip=440 count=70 status=none conv=notrunc
-$(bin): $(src) $(data)
- nasm -o $@ -f bin -i src/ src/main.asm
+floppy.img: boot.img
+ dd of=$@ if=/dev/zero bs=512 count=2880
+ dd of=$@ if=$< conv=notrunc
-boot.img: bootldr $(bin)
+boot.img: bootldr.bin $(bin)
cat $^ >$@
-floppy.img: boot.img
- dd of=$@ if=/dev/zero bs=512 count=2880
- dd of=$@ if=$< bs=1 conv=notrunc
+blank.img: Makefile
+ dd if=/dev/zero of=$@ bs=512 count=8192
+ echo start=2048 type=c | sfdisk $@
+
+bootldr.bin: $(elf)
+ objcopy -O binary -j '.boot*' $< $@
+
+$(bin): $(elf)
+ objcopy -O binary -R '.boot*' $< $@
+
+$(elf): $(obj)
+ $(LD) -o $@ $(obj) -Map link.map $(LDFLAGS)
-data/sprsheet.inc: data/sprsheet.png
- img2tiles -o $@ -n -t 32x32 $<
+src/data.o: src/data.asm $(data)
+
+%.o: %.asm
+ nasm -o $@ $(ASFLAGS) $<
.PHONY: clean
clean:
- rm -f $(bin) bootldr floppy.img boot.img
+ rm -f $(bin) $(obj) $(data) bootldr.bin floppy.img boot.img
.PHONY: disasm
-disasm: bootldr.disasm $(bin).disasm
+disasm: bootldr.disasm $(name).disasm
+
+bootldr.disasm: $(elf)
+ objdump -d $< -j .boot -j .boot2 -m i8086 >$@
-bootldr.disasm: bootldr
- ndisasm -b 16 -o 7c00h $< >$@
+$(name).disasm: $(elf)
+ objdump -d $< -j .text -m i386 >$@
-$(bin).disasm: $(bin)
- ndisasm -b 16 -o 7e00h $< >$@
+$(name).sym: $(elf)
+ objcopy --only-keep-debug $< $@
.PHONY: run
-run: $(bin)
+run: floppy.img
qemu-system-i386 $(QEMU_FLAGS)
.PHONY: debug
-debug: $(bin)
+debug: floppy.img
qemu-system-i386 $(QEMU_FLAGS) -s -S
+
+.PHONY: sym
+sym: $(name).sym
+
+
+tools/csprite/csprite:
+ $(MAKE) -C tools/csprite
+
+data/sprsheet.inc: data/sprsheet.png tools/csprite/csprite
+ tools/csprite/csprite -n sprsheet -s 32x32 $< >$@
+
+#data/sprsheet.inc: data/sprsheet.png
+# img2tiles -o $@ -n -t 32x32 $<