# HG changeset patch # User John Tsiombikas # Date 1402540638 -10800 # Node ID 0d2602a1b8514042b3ec25c8b26cdf109f3a858e initial commit diff -r 000000000000 -r 0d2602a1b851 Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Thu Jun 12 05:37:18 2014 +0300 @@ -0,0 +1,59 @@ +src = $(wildcard src/*.c) +obj = $(src:.c=.o) +dep = $(obj:.o=.d) +name = trycatch +elf = $(name).elf +bin = $(name).gba +elf_mb = $(name)_mb.elf +bin_mb = $(name)_mb.gba + +ARCH = arm-none-eabi + +CPP = $(ARCH)-cpp +CC = $(ARCH)-gcc +AS = $(ARCH)-as +OBJCOPY = $(ARCH)-objcopy + +opt = -O3 -fomit-frame-pointer -marm -mcpu=arm7tdmi -mtune=arm7tdmi + +CFLAGS = $(opt) -pedantic -Wall -I../gbasys/src -I. +LDFLAGS = ../gbasys/libgbasys.a -lm + +.PHONY: all +all: $(bin) $(bin_mb) + + +$(bin): $(elf) + $(OBJCOPY) -O binary $(elf) $(bin) + gbafix $(bin) + +$(bin_mb): $(elf_mb) + $(OBJCOPY) -O binary $(elf_mb) $(bin_mb) + gbafix $(bin_mb) + +$(elf): $(obj) ../gbasys/libgbasys.a + $(CC) -o $(elf) $(obj) -specs=gba.specs $(LDFLAGS) + +$(elf_mb): $(obj) ../gbasys/libgbasys.a + $(CC) -o $(elf_mb) $(obj) -specs=gba_mb.specs $(LDFLAGS) + +-include $(dep) + +%.d: %.c + @$(CPP) $(CFLAGS) $< -MM -MT $(@:.d=.o) >$@ + +.PHONY: clean +clean: + rm -f $(obj) $(dep) $(bin) $(bin_mb) $(elf) $(elf_mb) + +.PHONY: install +install: $(bin) + if2a -n -f -W $< + +.PHONY: run +run: $(bin_mb) + if2a -m $< + +.PHONY: simrun +simrun: $(bin) + VisualBoyAdvance -T 100 -2 $(bin) diff -r 000000000000 -r 0d2602a1b851 src/logger.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/logger.c Thu Jun 12 05:37:18 2014 +0300 @@ -0,0 +1,51 @@ +#include +#include +#include +#include +#include "logger.h" + +static void putchr(char c); +static void putstr(const char *str); + +static int curx, cury; +static int font_width = 8, font_height = 8; +static int ncols = 20, nrows = 16; + +void logmsg(const char *fmt, ...) +{ + va_list ap; + int sz; + char *buf; + + va_start(ap, fmt); + sz = vsnprintf(0, 0, fmt, ap); + va_end(ap); + + buf = alloca(sz + 1); + va_start(ap, fmt); + vsnprintf(buf, sz, fmt, ap); + va_end(ap); + + putstr(buf); +} + +static void putchr(char c) +{ + switch(c) { + case '\n': + case '\r': + curx = 0; + cury += font_height; + break; + + default: + if(isprint(c)) { + draw_glyph(c, curx, cury, front_buffer); + } + } +} + +static void putstr(const char *str) +{ + while(*str) putchr(*str++); +} diff -r 000000000000 -r 0d2602a1b851 src/logger.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/logger.h Thu Jun 12 05:37:18 2014 +0300 @@ -0,0 +1,6 @@ +#ifndef LOGGER_H_ +#define LOGGER_H_ + +void logmsg(const char *fmt, ...); + +#endif /* LOGGER_H_ */ diff -r 000000000000 -r 0d2602a1b851 src/main.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main.c Thu Jun 12 05:37:18 2014 +0300 @@ -0,0 +1,30 @@ +#include "gbasys.h" + +static void draw(void); +static void keyb_handler(void); + +static unsigned int keystate; + +int main(void) +{ + gba_init(); + //interrupt(INTR_KEY, keyb_handler); + + set_video_mode(VMODE_LFB_160x128_16, 1); + + clear_buffer(front_buffer, 0); + draw_string("please wait...", 0, 0, front_buffer); + + for(;;) { + draw(); + } + return 0; +} + +static void draw(void) +{ +} + +static void keyb_handler(void) +{ +}