
1.12
****

- Now old tips degrade into grass, and can be mined for ore.
- Overlay mode which displays mini-map stats in main window.
- Completely new power code that uses a power grid instead of 
  individual packets of power.
- Engine performance speedup of about 10%.
- New pbar design including add'l stats: total goods/ore/steel/etc.
- Time/click multiplexed monthgraph/mappoint stats window.
- Simplified mini-map selection using mouse.
- Click-drag-release to create multiple transportations.
- Mouse scrolling of main window using middle mouse button (X only).
- Resizing window to enlarge playing area (X and Win32 only).
- Keyboard scrolling of main window using arrow and shift+arrow 
  (X and Win32 only).
- You can now start a new game without exiting.
- New statistics available in mappoint stats window.
- Separate screen to set game options.
- New main menu system.
- New build/install procedure using autoconf/automake
- SVGALIB now respects /etc/vga/libvga.config to set mouse parameters.
- Semantic change to question about creating .Lin-city directory,
  new default is to create directory.
- Gettext support for internationalization.
- Partial support for iso8859-1 and iso8859-2 fonts.
- Code is now ANSI C compliant (I hope).
- Added OS/2 fixes.
- Linearize tech loss to fix divide by zero bug.
- Miniscreen no longer jumps to pollution screen when market burns waste.
- Update opening screen to use new-style organic farm graphics.
- Fix close directory problem introduced in 1.11.
- Fix wrong cost being charged for residences.

- No more diffgraph.
- No longer can bulldoze the most recently built item for free.
- No more Win32-style menu.

1.11
****

- Integrate X11 and Win32 code
- Greyscale X11 support added
- X11 performance enhancements
- Fix mouse offset problem
- Fix integer overflow problems at high tech levels
- Fix crashes when right clicking on grass squares
- The code has been "cleaned" using indent
- Some reworking of the Load/Save logic

1.10
****

- Fixed buffer overflow security holes. (Thanks to all those that brought my
attention to them.)
- The 'creating directory' questions are now asked within the game itself,
rather than via the controlling console or xterm. (Means you can start it
from, say, an fvwm menu.)

1.09 (Win32)
************

- Added full screen capability for VGA resolution.
- Fixed windows menus (open/save/help).
- Added "fast scroll" (SHIFT+ARROW KEY).
- Added help screen for Windows keys.

1.09
****

- Documentation updates only.

1.08 (Win32)
************

- Chaged font drawing routines to use windows fonts.
- Fixed mouse offset problems (square cursor not centered under mouse).

1.08
****
- Ooops, another problem with loading (good-time, bad-times) fixed.
- Missing tech level help page added.

1.07
****

- strcat bug in the new load code, fixed.
- mkdir -p fails on sco if the dir exists, workround done.

1.06
****

- Quite a serious 'clicking in the wrong place at the wrong time' bug fixed.
  Thanks to Timothy C. Hagman for spotting this one.
- A potential security hole closed. vga_init() is now called as close to the
  start of main() as possible.
- SCO port added.
- Gzip called with 'system' rather than through a pipe. The pipe caused
  some platforms to fail while saving.

1.05 (Win32)
************

- Fixed 1/2 second delay between clicking and placing item.
- Fixed decreased performance when mouse is in main screen. 

1.05
****

- "When you are in a scene and use for example roads and then load a less
   developed scene, you can still use them, until you switch to another
   item." - Alexander Klink    Bug fixed, thanks Alex.
-  The X multi-transport code didn't actually produce working transport, it
   just 'looked right'. Thanks to Holger Dietze for the bug report and
   patch.

1.04
****

- Pix doubled X screen redraw bug, fixed.
- remove_scene() bug fix by Chris J. Kiick. Thanks.
- mini screen messy power text overwrite, fixed.
- negative interest payment bug fixed.
- prints money straight after a load.
- Modern windmill OK box added.
- Shanty placement over the edge, bug fixed. Thanks to Chris J. Kiick.
- Installed dir permissions explicitly set. Not needed for most platforms,
  but does no harm.
- Fire, cricket, health and power cover mini screens now show the areas
  that are _NOT_ within the their areas. A number of people wanted this
  change.
- An attempt at getting 24bpp X visuals working. (maybe)

1.03
****

- Endian checking added. Big endian machines couldn't load good-times etc.
- (Actually in 1.02) Multi-transport added. Activated by shift+leftclick.
  This is for X only. (SVGALib players can use the keyboard to quickly draw
  a long bit of transport.)

1.02
****

- Another screen scrolling bug fixed. Thanks to Erik Schoenfelder.
- Man page by Erik Schoenfelder. It feels good to go 'man lincity' :)
- sbut size changed to 32 (was 34).
- Various small fixes to make the compile '-Wall' clean... well nearly.
- Sparc (and some other CPUs perhaps) bug fixed. Misalignment of 32 bit
  data at 16 boundary. (Most CPUs are happy with this.)

1.01
****

- MAJOR BUG FIX. The bug that sometimes corrupted the the odd square,
  causing a SEG fault (among other things) has been FIXED. It's been there
  since the very beginning - 18 months or so. :(  Thanks to Kay Hamacher for
  that (insignificant seeming) observation, that put me on the right track.
- Pixel doubling added for X. ( xlincity -d ) Makes it 1280x960 - bigger,
  but slower.
- Mini screen 'power cover' button added.

1.00
****

- Exporters discount more as you export more. This reduces the expected
  tax revenues.
- THMO's (12. Dec 1996) transport patch added.
- Transport 'overwrite' button added.
- Mouse fixes to picedit.
- Additions to mappoint stats for some areas -  more info.
- Small fixes to residence pollution deaths and job swing.
- Sustainability detection and display added. (Experimental at this time.)
- Tech load bug (universities not woking for up to a year) fixed.

TWEAKS:
- Power (when there is no coal) used by mills increased.
- Slight change to some 'tech level loss' ratios.
- Rocket pads use more goods.
- Increased the number of jobs used by both types of industry.
- Goods made by light industry reduced slighly.


0.99
****

Setup options for money separator, default is now a comma.
Setup options for mouse sensitivity, only for SVGALib.
     - both at the top of lincity.h
Speedups to pollution and 'get/put stuff' routines. (THMO) More to follow.
Transport/water icon choosing code speedup. (THMO)
Game save dir now called ~/.Lincity rather than ~/Lincity (if you have
an old dir, it should ask you if you want to move it.

Auto mail bot (to the HoF) message, fixed.
Cost for bulldozing some things, such as power lines and solar power
stations, was a 'bit buggy'. Fixed.
Small bug in power lines fixed.
Mouse 'droppings' when loading supplied scenes (eg 'good times'), fixed.
Couldn't quit when in pause mode. Fixed.
Fixed the (X) mouse sync problem when repeating builds and running out of
money.
Fixed keyboard entry bug when asking for the type of mouse.
Fixed file and dir ownership bug for .Lin-city and .lincityrc
Fixed the 'repeat load screen' bug. (I think)

Small changes to mappoint stats. (Windmills)
Clicking with the right button on the mini-screen displays it in the main
window.
Various tweaks; waste used by farms up, recycler efficiency down, goods tax
goes up with tech level.

Added ALPHA support for FreeBSD and IRIX.

X window can no longer be resized. It wasn't very nice if you tried.
X version now has a 'confine pointer' button.
X mouse cursor changes to pirate flag when in bulldose mode.
Server side pixmaps added for some animations etc. Speeds up play in X.
Backing store enabled in X. This speeds up redraws.

You can now go from one 'right button' help screen to the next, without
clicking twice.
Right mouse button now scrolls the 'main screen' by five squares, left
button still scrolls one.
Clicking on the mini_screen now places the centre of the area where you
clicked.

Recyclers need 'real' power to work. (Not low tech windmills.)
Gamma correction for 'washed out' displays. (see README)
Fixed loading non-existent game bug.
Displays break down of port import/export values when you click on a port.
(bug fix) light industry uses more ore when powered.
Bulldoze cost displayed with right button on areas.

0.98
****

Empty residence starve bug, fixed.
Transport bug when there are no markets, fixed.
Transport deals not collecting tax bug, fixed.

Max number of markets and windmills/substations increased to 512.

sunosMakefile added. Also having to define LIBDIR twice, removed - thanks to
David Finch.

Full tips still showed a 'last month' value. Just cosmetic - it didn't
actually take any more waste.

Mail the 'hall of fame' option when you have evacuated everyone.

0.97
****

Transport bug could cause game to hang under certain conditions. Fixed.
Also if waste accumulates on transport, some will be burnt, producing
pollution.

Various other cosmetic bug fixes and edited help pages.

Slight speedup due to removal of some error checking code that's never shown
an error. (0.01% if we're l/* SVGAlib, Copyright 1993 Harm Hanemaayer */
/* VGAlib version 1.2 - (c) 1993 Tommy Frandsen */
/* partially copyrighted (C) 1993 by Hartmut Schirmer */

/* Internal definitions. */

#ifndef _LIBVGA_H
#define _LIBVGA_H

#include <string.h>
# if defined __GLIBC__ && __GLIBC__ >= 2
#include <sys/io.h>
#endif

/* --------------------- Macro definitions shared by library modules */

/* VGA index register ports */
#define CRT_IC  0x3D4		/* CRT Controller Index - color emulation */
#define CRT_IM  0x3B4		/* CRT Controller Index - mono emulation */
#define ATT_IW  0x3C0		/* Attribute Controller Index & Data Write Register */
#define GRA_I   0x3CE		/* Graphics Controller Index */
#define SEQ_I   0x3C4		/* Sequencer Index */
#define PEL_IW  0x3C8		/* PEL Write Index */
#define PEL_IR  0x3C7		/* PEL Read Index */

/* VGA data register ports */
#define CRT_DC  0x3D5		/* CRT Controller Data Register - color emulation */
#define CRT_DM  0x3B5		/* CRT Controller Data Register - mono emulation */
#define ATT_R   0x3C1		/* Attribute Controller Data Read Register */
#define GRA_D   0x3CF		/* Graphics Controller Data Register */
#define SEQ_D   0x3C5		/* Sequencer Data Register */
#define MIS_R   0x3CC		/* Misc Output Read Register */
#define MIS_W   0x3C2		/* Misc Output Write Register */
#define IS1_RC  0x3DA		/* Input Status Register 1 - color emulation */
#define IS1_RM  0x3BA		/* Input Status Register 1 - mono emulation */
#define PEL_D   0x3C9		/* PEL Data Register */
#define PEL_MSK 0x3C6		/* PEL mask register */

/* 8514/MACH regs we need outside of the mach32 driver.. */
#define PEL8514_D	0x2ED
#define PEL8514_IW	0x2EC
#define PEL8514_IR	0x2EB
#define PEL8514_MSK	0x2EA

/* EGA-specific registers */

#define GRA_E0	0x3CC		/* Graphics enable processor 0 */
#define GRA_E1	0x3CA		/* Graphics enable processor 1 */

/* standard VGA indexes max counts */
#define CRT_C   24		/* 24 CRT Controller Registers */
#define ATT_C   21		/* 21 Attribute Controller Registers */
#define GRA_C   9		/* 9  Graphics Controller Registers */
#define SEQ_C   5		/* 5  Sequencer Registers */
#define MIS_C   1		/* 1  Misc Output Register */

/* VGA registers saving indexes */
#define CRT     0		/* CRT Controller Registers start */
#define ATT     (CRT+CRT_C)	/* Attribute Controller Registers start */
#define GRA     (ATT+ATT_C)	/* Graphics Controller Registers start */
#define SEQ     (GRA+GRA_C)	/* Sequencer Registers */
#define MIS     (SEQ+SEQ_C)	/* General Registers */
#define EXT     (MIS+MIS_C)	/* SVGA Extended Registers */

/* Shorthands for chipset (driver) specific calls */
#define chipset_saveregs __svgalib_driverspecs->saveregs
#define chipset_setregs __svgalib_driverspecs->setregs
#define chipset_unlock __svgalib_driverspecs->unlock
#define chipset_test __svgalib_driverspecs->test
#define chipset_setpage __svgalib_driverspecs->__svgalib_setpage
#define chipset_setmode __svgalib_driverspecs->setmode
#define chipset_modeavailable __svgalib_driverspecs->modeavailable
#define chipset_getmodeinfo __svgalib_driverspecs->getmodeinfo

/* Shorthands for internal variables and functions */
#define CI	__svgalib_cur_info
#ifdef __alpha__
#define SM	__svgalib_sparse_mem
#endif
#define GM	__svgalib_graph_mem
#define CM	__svgalib_cur_mode
#define VMEM	__svgalib_videomemoryused
#define DREP	__svgalib_driver_report
#define CRITICAL __svgalib_critical
#define COL	__svgalib_cur_color
#define CHIPSET __svgalib_chipset
#define SCREENON __svgalib_screenon
#define MODEX 	__svgalib_modeX
#define MODEFLAGS __svgalib_modeflags
#define infotable __svgalib_infotable

#define SVGADRV		 2
#define STDVGADRV	 1
#define STDVGAMODE(mode) (chipset_modeavailable(mode) == STDVGADRV)
#define SVGAMODE(mode)   (chipset_modeavailable(mode) == SVGADRV)

#ifdef __alpha__
#include <asm/io.h>
#include <linux/autoconf.h>
#if defined(CONFIG_ALPHA_JENSEN)
#define DENSE_MEM_BASE  EISA_MEM
#define SPARSE_MEM_BASE EISA_MEM
#define MEM_SHIFT       7
#define MEM_TYPE_BYTE   0x00
#define MEM_TYPE_WORD   0x20
#define MEM_TYPE_LONG   0x60
#elif defined(CONFIG_ALPHA_CABRIOLET)
#define DENSE_MEM_BASE  APECS_DENSE_MEM
#define SPARSE_MEM_BASE APECS_SPARSE_MEM
#define MEM_SHIFT       5
#define MEM_TYPE_BYTE   0x00
#define MEM_TYPE_WORD   0x08
#define MEM_TYPE_LONG   0x18
#elif defined(CONFIG_ALPHA_NONAME)
#define DENSE_MEM_BASE  LCA_DENSE_MEM
#define SPARSE_MEM_BASE LCA_SPARSE_MEM
#define MEM_SHIFT       5
#define MEM_TYPE_BYTE   0x00
#define MEM_TYPE_WORD   0x08
#define MEM_TYPE_LONG   0x18
#endif
#define SPARSE_GRAPH_BASE (SPARSE_MEM_BASE + (0xA0000 << MEM_SHIFT))
#define GRAPH_BASE (DENSE_MEM_BASE + 0xA0000)	/* this is wrong for */
#define FONT_BASE  (DENSE_MEM_BASE + 0xA0000)	/* jensen type hardware */
#else
#define GRAPH_BASE 0xA0000
#define FONT_BASE  0xA0000
#endif
#define GRAPH_SIZE 0x10000
#define FONT_SIZE  (0x2000 * 4) /* 2.0.x kernel can use 2 512 char. fonts */
#define GPLANE16   G640x350x16

/* graphics mode information */
struct info {
    int xdim;
    int ydim;
    int colors;
    int xbytes;
    int bytesperpixel;
};

/* --------------------- Variable definitions shared by library modules */

extern int __svgalib_CRT_I;		/* current CRT index register address */
extern int __svgalib_CRT_D;		/* current CRT data register address */
extern int __svgalib_IS1_R;		/* current input status register address */
extern unsigned char * BANKED_MEM_POINTER, * LINEAR_MEM_POINTER, * MMIO_POINTER;
extern unsigned long int __svgalib_banked_mem_base, __svgalib_banked_mem_size;
extern unsigned long int __svgalib_mmio_base, __svgalib_mmio_size;
extern unsigned long int __svgalib_linear_mem_base, __svgalib_linear_mem_size;
extern unsigned long int __svgalib_mmio_base, __svgalib_mmio_size;
extern struct info CI;		/* current video parameters */
extern int COL;			/* current color            */
extern int CM;			/* current video mode       */
extern struct info infotable[];
extern int SCREENON;		/* screen visible if != 0 */
extern unsigned long __svgalib_graph_base;
extern unsigned char *GM;	/* graphics memory frame */
#ifdef __alpha__
extern unsigned char *SM;	/* sparse graphics memory frame */
#endif
extern int MODEX;		/* TRUE after vga_setmodeX() */
extern int MODEFLAGS;		/* copy of flags of current modeinfo->flags */

#ifdef BACKGROUND
extern int __svgalib_virtual_mem_fd;
#endif
extern int __svgalib_mem_fd;
extern int __svgalib_tty_fd;
extern int __svgalib_nosigint;
extern int __svgalib_mouse_fd;
extern int __svgalib_kbd_fd;
extern int __svgalib_runinbackground;

extern unsigned char __svgalib_novga;
extern unsigned char __svgalib_textprog;
extern unsigned char __svgalib_secondary;
extern unsigned char __svgalib_novccontrol;
extern unsigned char __svgalib_m_ignore_dx;
extern unsigned char __svgalib_m_ignore_dy;
extern unsigned char __svgalib_m_ignore_dz;

extern char *__joystick_devicenames[4];

/* --------------------- Function definitions shared by library modules */

extern int (*__svgalib_inmisc)(void);
extern void (*__svgalib_outmisc)(int);
extern int (*__svgalib_incrtc)(int);
extern void (*__svgalib_outcrtc)(int,int);
extern int (*__svgalib_inseq)(int);
extern void (*__svgalib_outseq)(int,int);

extern int __svgalib_setregs(const unsigned char *regs);
extern int __svgalib_saveregs(unsigned char *regs);
extern void __svgalib_dumpregs(const unsigned char regs[], int n);
extern void __svgalib_get_perm(void);
extern int __svgalib_getchipset(void);
extern int __svgalib_name2number(char *modename);
extern void __svgalib_delay(void);
extern int __svgalib_addmode(int xdim, int ydim, int cols, int xbytes, int bytespp);
extern int __svgalib_physmem(void);
extern void __svgalib_waitvtactive(void);
extern void __svgalib_open_devconsole(void);
extern void __svgalib_flipaway(void);
extern void (*__svgalib_mouse_eventhandler) (int, int, int, int, int, int, int);
extern void (*__svgalib_keyboard_eventhandler) (int, int);
extern void __joystick_flip_vc(int acquire);
extern char *__svgalib_TextProg_argv[16]; /* should be enough */
extern char *__svgalib_TextProg;
extern int __svgalib_VESA_savebitmap;
extern int __svgalib_VESA_textmode;
extern unsigned char __svgalib_vesatext;
extern int __svgalib_mapkeyname(const char *keyname);
extern voirelease, SVGALIB_ACQUIRE_SIG);
    SETSIG_RE(siga, SVGALIB_RELEASE_SIG, releasevt_signal);
    SETSIG_AQ(siga, SVGALIB_ACQUIRE_SIG, acquirevt_signal);
    ioctl(__svgalib_tty_fd, VT_SETMODE, &newvtmode);
    return;
}

void vga_lockvc(void)
{
    lock_count++;
    if (__svgalib_flip_status())
	__svgalib_waitvtactive();
    return;
}

void vga_unlockvc(void)
{
    if (--lock_count <= 0) {
	lock_count = 0;
	if (release_flag) {
	    release_flag = 0;
	    releasevt_signal(SVGALIB_RELEASE_SIG);
	}
    }
    return;
}

void vga_runinbackground(int stat,...)
{
    va_list params;

    va_start(params, stat);
    switch (stat) {
    case VGA_GOTOBACK:
	__svgalib_go_to_background = va_arg(params, void *);
	break;
    case VGA_COMEFROMBACK:
	__svgalib_come_from_background = va_arg(params, void *);
	break;
    default:
	__svgalib_runinbackground = stat;
	break;
    }
    va_end(params);
}

#endif
/* VGAlib version 1.2 - (c) 1993 Tommy Frandsen                    */
/*                                                                 */
/* This library is free software; you can redistribute it and/or   */
/* modify it without any restrictions. This library is distributed */
/* in the hope that it will be useful, but without any warranty.   */

/* Multi-chipset support Copyright 1993 Harm Hanemaayer */
/* partially copyrighted (C) 1993 by Hartmut Schirmer */

#include <stdio.h>
#include <string.h>
#include "vga.h"
#include "libvga.h"
#include "vgabg.h"

int vga_clear(void)
{
    vga_screenoff();
#ifdef BACKGROUND
    __svgalib_dont_switch_vt_yet();
#endif
    if (MODEX)
	goto modeX;
    switch (CM) {
    case G320x200x256:
    case G320x240x256:
    case G320x400x256:
    case G360x480x256:
      modeX:
#ifdef BACKGROUND
        if (vga_oktowrite())
	    {
#endif
        
	/* write to all planes */
	port_out(0x02, SEQ_I);
	port_out(0x0F, SEQ_D);

	/* clear video memory */
	memset(GM, 0, 65536);
#ifdef BACKGROUND
	    }
	  else
	    {
	     int i;
	     
	     for (i = 0; i < 4; i++) {
	        /* save plane i */
	        __svgalib_fast_setpage(i);
	        memset(GM, 0, GRAPH_SIZE);
               }
	    }
#endif
	break;

    default:
	switch (CI.colors) {
	case 2:
	case 16:
	    vga_setcolor(0);

#ifdef BACKGROUND
        if (vga_oktowrite())
	    {
#endif
	    /* write to all bits */
	    port_out(0x08, GRA_I);
	    port_out(0xFF, GRA_D);
#ifdef BACKGROUND
	    }
#endif

	default:
	    {
		int i;
		int pages = (CI.ydim * CI.xbytes + 65535) >> 16;
#if defined(CONFIG_ALPHA_JENSEN)
		int j;
#endif
#ifdef BACKGROUND
                if (!vga_oktowrite())
	              {
		       switch (CI.colors) {
	                case 2:
	                case 16:
			pages*=4;
                       }
		      }
#endif

		for (i = 0; i < pages; ++i) {
		    vga_setpage(i);

#if defined(CONFIG_ALPHA_JENSEN)
		    for (j = 0; j < 65536; j += 2)
			gr_writew(0, j);
#else
		    /* clear video memory */
		    memset(GM, 0, 65536);
#endif
		}
	    }
	    break;
	}
	break;
    }

    vga_setcolor(15);
#ifdef BACKGROUND
    __svgalib_is_vt_switching_needed();
#endif
    vga_screenon();

    return 0;
}
****

A few more help pages and a proper fire station icon. I'm going to make this
3x3 and animated soon.

Updated the profilling README.

0.68
****

Save and load fixed. (Didn't remember to change it when things taken out of
structures.)

Animations times reset after load. (You had to wait until you had played as
long as you had before the save to start the animations again.

Light industry recoded. This will need some tweaking to get it right.


0.67
****

Taken some non used variables from struct TYPE.

Struct TYPE.group and .size changed to short.

Small increase in animation speed of windmills.

Shuffle mappoint from 5 to 4.

Shuffle markets from #/2+1 to #/4+1.

Slight reorder of tests in time step loop; put transport first...



0.66
****

mappoint[][].pollution moved out of structure MAPPOINT. This is because this
array is accessed linearly quite a lot and it's nicer to the cache if it's
an array. The profiling went from 6.5ms to 2.5ms for do_pollution! More will
be taken out of the array soon for the same reason.

New mouse pointer.

Some cleanups in the market code. Should execute 1 or 2 ns faster :)


0.65
****

Ports mappoint stats bug, showing no exports, fixed.

Ports now show they are connected to rivers. Icon needs a bit of work
though.

Cut down on road and rail pollution.

Added coalmine and port pollution.

Unnatural deaths cost doubled to 500.

Real-time, rather than game-time, animation added for potteries,
blacksmiths, mills, and fire.

Played with the way mills and blacksmiths work, to make them more like
potteries. This is just a code cleanup and shouldn't effect the way things
work. ( Ohhhh yehhhh!?!)

Seconds per year info added. This is to give me some timing information to
help with the optimisation.

Fires won't spread for 15 seconds, after that it's random.

Little bug in point bars (they sometimes showed a down one and a little up
one) fixed. I hope! This is the 3rd time, the other two are not documented
as they were during the development phase.

No more max population at a residence! But slightly harder to fill. The
graphic is updated every 30 seconds.


0.64
****

Fire burning wildly on tracks fixed.

-fno-strength-reduce taken out of makefile!!!  It seemed to cause an
optimisation bug!?! Isn't it supposed to be the other way round?

Month graphs for unemployment and starving scale increased. FSD is 32%

Food point-bar added.

Real-time animation for windmills added, rather than game-time.


0.63
****

Rocket launches now controllable with yes/no boxes.


0.62
****

Cleand up a few buggets in the point bars.

Fires now have more or less chance of starting, depending on what sort of
area it is.

Fixed flag compare bug in do_residence. All the tweaking in the last few
versions is meaningless, therefore more tweaking now.


0.61
****

Moved mappoint stats code to mps.cxx and mps.h. (From screen.cxx)

Point bars added to show increase/decrease of population and tech.

Monthgraph unemployment and starve graphs are now solid, to help them stand
out.

Pollution stat added to residence mps.

Fire stations cost twice as much to buy and run. They're quit cheap still.


0.60
****

Tweaked the values in do_residence to change the way people move in and out,
should mean they are slightly harder to fill up. They also like fire and
health cover. Slightly (apx.8%) higher birth rate. People like crowds less.

Dole rate up by 50%

Schools use more jobs and goods and cost more, they make more tech points
though. (I found I had to put lots of schools in.)

Cost of running windmills slightly more than doubled.

Im-ports and ex-ports now need to be connected to REAL rivers. A real river
is one that is connected to another bit of real river! I like that :)
They must connect along the *whole* right hand side.

Im-ports and ex-ports now come in at a tech level of 3.5%

Mappoint stats for markets - all values cannot go above 100% now!

Debug (cheat) keys now enabled with a #define DEBUG_KEYS

Money debug key added. 'm' now adds 1000000 quid.

New Tech level debug key - 'T' adds 1%.  't' still adds 0.1%

Fire stations have reduced range (18 now - in each direction).

Cricket areas added. They make people happier and use some jobs and goods.
Their range is 10 units in each direction.

Animated fires. They spread if you don't put them out. Fire cover stops
them spreading.

0.59
****

Oops... forgot.
Just bug fixes to 0.58 I think.

0.58
****

Monuments now produce tech points again... oops.

Fires tell you what has caught fire.

0.57
****

Fire stations added. The use a few jobs and goods. Cover is updated every
three months.

Health centres now cover an area rather than everywhere.

Small changes to population stuff, to take into account new type of
health centres.

Monuments slowly reduce their tech production to zero at 40% tech.

Mills better than blacksmiths better than potteries - More efficient use of
jobs.


0.56
****

Curvy water added.

Other costs button added to mini screen.

Interest on budget deficit added (2% per year)

Windmills cost money to run - you subsidise green power sources! (except
solar power for the time being).

Scrolling messages on opening screen.

0.55
****

Bug in ok button call up for mills etc fixed.

School mappoint stats shows 100%

Prices bug fixed (hopefully).

Tech level when potteries and blacksmiths come in swapped.

Greyed out buttons on reload bug fixed?

You can't buy certain areas when you have a budget deficit.

Budget deficit prints in red.

Starving mini screen button added.

A few more help pages added.
 
0.54
****

Communes work now, broken in last release.

Save mkdir bug fixed (I think).

Changes to when areas become available, again.

0.53
****

Opening screen added. Not finished. Need to add scrolling credits and that
sort of thing.

Schools now use goods.

Communes don't produce ore any more, they convert ore they get off tracks
into steel. They no longer produce goods or food.

Windmills don't supply light and heavy industry any more!!
  
People buy less goods if they have no power.

The people pool has no effect on how people feel about where they live; it
only had a small effect anyway.

Start selected type is track. So you don't start demolishing stuff when you
reload a game.

Loading now remembers that you have done a coal survey or not.

Tech level when buttons become active updated.  
 
0.52
****

Cost of areas is now a function of the tech level.

Universities MADE NO TECH, even though they said they did. Bug fixed. I
think the bug was introduced when I made them make more tech a few versions
ago.

Tech level erosion doubled.

Mouse auto repeat slowed down a bit.

0.51
****

New way to load and save cities. Press s to save, l to load.

All button 'up' OK dialog boxes written.

Bug fixed in mills, collected coal instead of food!

Universities use 1/5 less jobs and produce 50% more tech points.


0.50
****

People use half as many goods. They are also slightly pissed off if they
can't get power for them. The overall efect, even without power, if good
though.

Jobs reduced on a number of things.

Jobs held by markets reduced by 1/3.


0.49
****

Text drawing changed to compressed font. This won't have much efect at this
time, apart from bugs of course.


0.48
****

Massage dialog boxes added. To tell you, for example, that the tech level
has reached a high enough value to build a certain type of area.

Blacksmiths now use coal. Also a bug fixed where it was using jobs but not
making anything.

Mill mappoint stats cosmetic bug removed.

Income tax rate reduced from 10 to 8

Coal tax rate increased from 6 to 8

Potteries animated.

Tech level erosion reduced.

Schools use less jobs, but produce less tech as well, they also cost money
to run - not much though.

Monuments produce a bit more tech.
 
Universities produce more tech with less jobs and goods.

Jobs used by markets reduced.

Communes don't use jobs at the gates any more. They produce 20% more ore.

Blacksmiths, potteries and mills use less coal.

Potteries use 1/4 less ore.

Output of windmills reduced by half.

0.47
****

More help screens added.

Check dialog boxes for expensive things added. Not all things call this yet.

The first time you call a coal survey, it will cost you 1 million. It is
caught by the dialog box.

Monuments make a bit more tech.

Schools come in at the start.
 
0.46
****

More help screens added.

New helpline type; tbutton.

Monuments icon now changes as it is built.

Working population percent reduced to 45 from 50. Flexibility (swing)
increased from 10 to 15.

(debugging tool) Press t to increase tech-level by 1%.

Loosing tech points now starts at 1%. You loose 0.5% of your tech level
every month (if you don't make any more).

Help bug (try selecting help when you've got lots of windmills!) removed?

Unnatural deaths in the same residence now make people more unhappy.
Giving them power makes them even more happy than before, not giving them
power makes them a bit more unhappy.

The size of the people pool has 10 times less influence on people moving in
and out of residences.

Mouse bug. Hide_mouse, redraw mouse counts hides and counts back before a
show.

Animated blacksmith. Still needs more work on the graphics though.


0.45
****

Potteries added. They turn ore and coal into goods.

In light industry, the values for different icons have changed. 'Low' is
shown with much less output than before; it seemed to be closed when it was
churning quite well.

Monuments use some jobs to build.

Help routines added.

0.44
****

Remove people bug finally (of cource) removed. Now you can evacuate
everyone.

Monuments added. This is mainly to help start the game off. Each monument
makes 1 tech point every 10 days.

The buttons only become active when you reach a certain tech level. These
values are held in cim-city.h, for example 'GROUP_ROCKET_TECH 50' says you
must have 50% tech level to be able to click on the button. You can remove
this restriction by commenting out the line 
	'#define SELECT_BUTTONS_NEED_TECH'
near the start of cim-sity.h.

Health centres reduce the birth rate a bit, as well as doing everything they
did before.

You no longer need power for residences to permit childbirth.

Tracks now turn in to communes.

Tax from coal increased by 50%.

Export tax from coal halved, from steel, divided by 5, you can still make a
lot of money though.

Heavy industry makes less steel than before, bit of a tweak to the output
values shown by the graphics, will need more later no doubt.

Communes don't supply jobs any more, they use some at each connection point.
They do, however, produce 4 times as much ore as they used to.
 
Bulldozing costs money now. Where it tells you hoe much it costs, now tells
you how much it costs to demolish.

If you build something by mistake, you may bulldoze it and get your money
back. To do this you must not have built or bulldozed anything else. I think
I'll put a time limit in as well at some point - I'm sure you can see why.

Farms produce 3 times less output when un-powered.

Schools added. They use jobs to make tech points.

Blacksmiths added. They use steel to make goods.

Mills added. They use FOOD to make goods. These can be dangerous, it's your
job to provide enough food for the people.


0.43
****

Windmill colour added to mini screen.

Bugfix. Bulldozed markets now forget their buy/sell buttons.

Bugfix. Remove_people() (with rockets) had an = rather than == in an if.
Bah, caught again. First time for a while though :)

Power lines turn into windmills. - if you see what I mean.

Rocket stuff added to load and save.


0.42
****

Opps, lost some of the changes made, I'll see if I can remember the most
important.

Rockets added. You must launch 5 in a row successfully then you can start
taking people away 1000 per rocket. If one crashes, you must launch another
5 with no one on board.

Windmills are like substations, you can even connect power lines to them I
think, but with a windmill producing power. They need jobs to work.

This and that...


0.41
****

Rivers are NOT transport, for the time being anyway. It was far too slow.

Check_road_graphics() sets the direction flags for the new do_road()
routine.

Market control window added. Click on a market twice.

Deaths from pollution halved. This will have to do for now, I'll make it
better soon :)

New transport routines for tracks and rail, as well as roads.

0.40
****

River landscape feature added. All square though, pretty them up later.

Random numbers seeded with time(). This is to test the river code really. If
you want coal in the same place it's always been, comment the SEED_RAND
#define in cim-sity.h, or move the srand(...) line to after
coal_reserve_setup() in main.cxx ( in main() ).

Rivers are transport! The carry twice as much as tracks, but half as much as
roads. They, however, *only deal with markets*, trying to line up other
icons doesn't really work.

(Sort of bug) Mouse hidden when printing stats and drawing graphs.


Speedups
^^^^^^^^
Market icon only updated every 25 days.


0.39
****

Water added. This has been added to enable games scenarios to be set up
rather than to use in play, but you can divert a river at a cost.

Load and save working again. (Well I hope so.)

Universities hold a bigger store of goods and jobs. It makes it easier to
see which of them is in short supply.

Universities int_3 variable holds the total number of tech points this uni
has made.

Starving and unemployed percentage stats now show 10ths. ie xx.x

Power diff graph amplitude doubled.

Goods diff graph *not* divided by two anymore, still log though.

Organic farms increase output linearly to double with max tech level.

(Bug fix) Recycle centres connect to roads and rail now. Tracks always did! 

Pollution kills people. Will need some tweaking probably. It also makes
people move into the people_pool more.

Pollution mobility reduced by about 1/3. (A speedup as well.)

Farm range increased from 4 units to 6. Should it be even more?

Solar power station output with no tech level increased to what it was
before 0.33 and now increases to 3 times output with max tech level. (Very
small speedup as well.)

Jobs used to haul stuff on and off transport reduced by half.

Capital costs in yearly stats replaced by other costs, universities 50 per
'day', recycle centres also 50 per 'day' (50 per 'day' == 5000 per 'month')

All deaths, other than from old age, are counted as unnatural and cost you
250 quid. These can be from pollution or by starving for now. Figure added
to stats at bottom, under tech level, shows the unnatural deaths for the
last 'month'.

Jobs used to dig coal reduced from 1000 to 900, and jobs used to load coal
and ore into power stations and industry respectively, reduced by 10%.


Speedups.
^^^^^^^^^
Get_jobs function split into get_jobs and put_jobs.

Get_food function split into get_food and put_food.

Some ifs that weren't needed taken out of check_road|rail_graphics(), very
small speedup 'cos they're not called very often.
  

0.38
****

Profiling support added.

Light industry uses less steel, goods made per ore doubled.

Recycle goods increased five times and jobs used reduced.

Coal calorific value increased by 20%. Electricity production increased by
10%.

Background colour of graphs darkened.

Speedups:
^^^^^^^^
'Do time step' loop continues if mappoint == CST_USED.
 
In do_residence all those mappoint[x][y].population refs changed to 
(register) p.  ( Later... Bahh... -O2 does this anyway!)
 
In do_residence no more min population, <0 still caught earlier so OK to
take out, also people pool respects the old min pop. 

In do_residence 3 birth ifs made into 1 and rand() put after flagcheck.

In coal power station some transport ifs combined with use of new
FLAG_IS_TRANSPORT flag.

In do_market, transport ifs combined.

In shuffle markets number of loops cut and register int added.

In do_power_line, use FLAG_IS_TRANSPORT flag. 12 ifs now 4.

In light and heavy industry, use FLAG_IS_TRANSPORT flag.

Make file changed.



0.37
****

Diff graph put in mappoint stat window when not showing stats.

Graph windows are drawn at startup.

Max tech level doubles the output of coal power stations (linear).

P key - increases people pool by 100

D key - does a screen dump in raw rgb format (colours seem wrong though)

Unemployed and starving graph scale multiplied by two.

A speedup, perhaps. Check transport moved to 'refresh screen' rather than
'update main screen'. Probably breaks things.


0.36
****

No jobs needed for sub-stations to operate.

cim-sity.man started.


0.35
****

Mini screen coal reserve button and graphics added.

Jobs used to load coal, steel and ore onto transport reduced slightly.

Recycle centres added. They recycle used goods into ore. 10% with zero tech
level, 100% with max tech level (currently 1,000,000).

Universities have to get bigger 'clumps' of jobs. This reduces the
competition with pits and power stations.

Range of coal-mines increased from 5 to 8 units from top left corner.

Coal reserves more clumpy, it was a bit too spread out.

People less happy with pollution.

Pollution less mobile.

Mouse repeat when held down 'fixed', probably have to 'fix' it again to make
it dependent on the speed of the computer. 


0.34
****

Bug fixed to make solar power stations work again, they worked *too* well in
0.33. They had more or less infinite output (mike@emgee would have liked that).

Mouse button auto repeat.

Mini screen unemployment button and graphics added.


0.33
****

Universities use jobs and goods to do research, this adds to the tech level.

Solar power station output depends on the tech level *when built*.

Tech level 'stat' added.

More goods travel by transport.

Import costs reduced by half.

Wind blows pollution up-right (NE).

A little less pollution destroyed by normal means and a little more
destroyed by parkland.


0.32
****
Mappoint flags (powered, fed, employed) changed to bits rather than ints.
A saving of 80K (adding more flags later) in the mappoint structure
array.

Shuffle sub-stations added. Stops hammering the 'first' sub-station put in
near things.

Parks installed. These help to get rid of pollution. Use these to block your
residences from (wind born?) pollution.

Mini screen 'normal' and 'pollution' buttons and code added to show pollution
levels. 'Normal' button returns mini screen back to normal to help flipping
between the two to see where the pollution is coming from and where it's
going.

Pollution tends to move down and right (SE)

Roads, rail, light industry, heavy industry, coal mines and coal power
stations produce pollution.

0.31
****
Markets connect to roads all the way round, even though it might not look
like it yet. *Major* change in progress on the way things connect to
transport.

Coal-mines grab some jobs for next go when there is a shortage. This only
applies to *digging* the coal for now. Let's see how that goes.
 
Coal power stations grab some jobs for next go when there is a shortage.
This only applies to *generating* the electricity for now. Let's see how
that goes.

People pool goes down by 1% per month (rather than 1%+1).

People pool starts off with 100 people.
