diff --git a/ediv/CHANGE_LOG.txt b/ediv/CHANGE_LOG.txt index 0aeb2a2..2c804e4 100644 --- a/ediv/CHANGE_LOG.txt +++ b/ediv/CHANGE_LOG.txt @@ -1,3 +1,10 @@ +9/9/2002 +-------- + * Le he añadido icono al stub, y también he hecho un programa (iconchanger) + para cambiárselo después de haber compilado un programa con ediv. mola + eh? :) incluyo también un icono de pacman de ejemplo ke me kedó mu majo. + (Er_Makina) + 6/9/2002 -------- * Mejorado ligeramente el sistema de indexado de variables, ya no estan diff --git a/ediv/bin/pacoman.ico b/ediv/bin/pacoman.ico new file mode 100644 index 0000000..26a7415 Binary files /dev/null and b/ediv/bin/pacoman.ico differ diff --git a/ediv/propuestas.txt b/ediv/propuestas.txt index 4e13976..6be1496 100644 --- a/ediv/propuestas.txt +++ b/ediv/propuestas.txt @@ -266,4 +266,6 @@ Some old people actually have life support systems with those functions built in http://www.cs.ukc.ac.uk/people/staff/rej/gc.html screen_color(int color) -rellena el fondo con un color \ No newline at end of file +rellena el fondo con un color + +Incluir Psycle (tracker musical) en el IDE: http://sourceforge.net/projects/psycle/ \ No newline at end of file diff --git a/ediv/src/iconchanger/iconchanger.c b/ediv/src/iconchanger/iconchanger.c new file mode 100644 index 0000000..934619e --- /dev/null +++ b/ediv/src/iconchanger/iconchanger.c @@ -0,0 +1,143 @@ +/* IconChanger + * Pequeña utilidad-complemento para eDIV que permite sustituir el icono del stub de + * win32 por otro. El icono nuevo debe ser exactamente igual que el original del stub, + * es decir, tiene que cumplir las siguientes condiciones: + * - Contener 6 imágenes en total: + * + 16x16 a 4, 8 y 24 bits de color + * + 32x32 a 4, 8 y 24 bits de color + * - "Pesar" exactamente 8.854 bytes. + * Este programa es muy simple así que no se molesta en comprobar el formato del fichero, + * únicamente comprueba su tamaño. Si metes un icono que no es adecuado.. allá tú.. + * Puede ser útil en el futuro currarnos un programa decente que soporte cualquier tipo + * de iconos, que cambiara el tamaño del exe, etc etc, ya sería la reostia, pero por + * ahora con esto nos sobra. + * Pekeño inconveniente: sólo se puede cambiar el icono 1 vez :p Si se kiere cambiar el + * icono por segunda vez, hay que recompilar el programa. En realidad no importa, ya que + * en verdad es lo que pasa en todos los compiladores... + * Si se kiere cambiar el icono y un virus te ha comido el ediv.exe o el .prg, pos tiras + * de Resource Hacker y a kaxkarla... + * + * Er_Makina + */ + +#include +#include +#include + +#include "image.h" + +#ifndef _WIN32 +#error IconChanger es sólamente para Win32 +#endif + +#define ICO_SIZE 8854 // Tamaño que debe tener el .ico +#define ICO_START 0x66 // Offset donde se empieza a leer el .ico +#define ICO_LEN 0x2230 // Tamaño del bloque a copiar del .ico al .exe + + +void* e_malloc(size_t size) +{ + void* ret; + + if(!(ret = malloc(size))) { + printf("ERROR: Memoria insuficiente.\n\n"); + exit(1); + } + + return ret; +} + +int main(int argc, char* argv[]) +{ + FILE* f; + unsigned char *exe,*ico; + int tamanyo; + int i,j; + int ok=0; + + printf("eDIV IconChanger - (c) Copyright Sion Ltd. 2002\n\n"); + if(argc!=3) { + printf("Modo de uso:\n\n %s \n\n",argv[0]); + exit(2); + } + + if((f=fopen(argv[2],"rb"))==NULL) { + printf("ERROR: No puedo abrir %s\n\n"); + exit(3); + } + + fseek(f,0,SEEK_END); + tamanyo=ftell(f); + if(tamanyo!=ICO_SIZE) { + fclose(f); + printf("ERROR: El icono no es del formato válido\n\n"); + printf("Te refrescaré la memoria:\nEl icono (.ico) DEBE contener 6 imágenes en total, a saber:\n"); + printf(" - 3 imágenes de 16x16 (a 4, 8 y 24 bits de color).\n"); + printf(" - 3 imágenes de 32x32 (a 4, 8 y 24 bits de color).\n"); + printf("No puede faltar ninguna, ya que el archivo debe ocupar EXACTAMENTE %d bytes.\n\n",ICO_SIZE); + exit(4); + } + + ico=(unsigned char*)e_malloc(tamanyo); + fseek(f,0,SEEK_SET); + fread(ico,tamanyo,1,f); + fclose(f); + + if((f=fopen(argv[1],"rb"))==NULL) { + printf("ERROR: No puedo abrir %s\n\n"); + exit(5); + } + + fseek(f,0,SEEK_END); + tamanyo=ftell(f); + fseek(f,0,SEEK_SET); + exe=(unsigned char*)e_malloc(tamanyo); /* no creo ke pase nada por unos 125 kb... + eso si, cuando se puedan meter el PAK y + las DLL's en el exe, va a haber ke cambiar + esto... */ + fread(exe,tamanyo,1,f); + fclose(f); + + // BUSKEDA + + printf("Buscando sitio donde meter mano en el exe...\n"); + + for(i=20;i + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +