I'd suggest using a chain of discrete counters clocked with 4x chroma and generating a composite signal directly from that, using resistors as a crude DAC for the output stage. If e.g. you have use a two-bit DAC that can generate sync, black, and two levels above that, you could fairly easily generate 81 colors by outputting a repeating sequence of four non-sync signal levels (since there are three usable levels, and 3x3x3x3 is 81). If you use a 3-bit DAC with six non-sync levels, you could easily generate 1296 colors.
To start with, I'd suggest building two timer chains--one of which counts groups of 910 pulses from the 14.3818Mhz clock, and the other of which counts groups of 263 pulses from the output of that first clock. Each group could be implemented using three 74HC163 four-bit presettable counter chips. One could, alternatively, use two such chips plus some other logic, but using three would be simple and avoid various fiddly issues.
All six chips should be fed the same clock. Arrange the first group so that any time bit 10 is 0, the upper bit will be loaded with its present value and the remaining bits loaded with 100 0111 0010 and allow the upper stage to advance using the ENT input. Arrange the second group so that the carry output from the second stage will cause the first two stages to be loaded with either zero or 1111 1001. Doing things this way will make the top bit of the horizontal counter available as a signal that alternates polarity each line, and make the top three bits of the vertical counter available for use as a frame counter.
Once those counters are working, all you'll need to do is build circuitry that will, for each 14.3818Mhz clock pulse, figure out what the video level should be. The first step for that is probably to generate sync and chroma, but there's a fair bit of room for flexibility. To help you further with the design, I'd need to know more about what exactly you're looking to do.